問題描述:
用 nohup 起了一個代碼,把打印重定向到 run.log 中,但是使用清空文件命令以後,用 ll 命令查看,顯示 run.log大小並沒有改變
1.問題梳理
跑代碼命令
nohup python -u run.py > run.log 2>&1 &
ll -h 查看顯示 run.log 大小 16M;du -sh 查看當前目錄大小 16.1M
使用清空日誌命令:
>run.log
再次 ll -h 查看顯示 run.log 大小 16.1M,也就是說大小沒變;du -sh 查看當前目錄大小 24k,也就是說文件佔用的塊大小還是變小了;這看起來很矛盾,到底文件有沒有清空?
2.探究
vim run.log
打開文件,gg回到第一行,發現是奇怪的字符,下一行顯示已經不是最初打印的第二行,也就是說清空的時候原來內容卻是是被清空了,清空的內容被一些特殊的字符取代,所以 ll 查看的時候大小並沒有變。
3.解決
這種現象的原因是由於在 nohup 重定向輸出啓動時 採用了 “>” 清空重定向的方式 而不是 ">>"追加重定向的方式
通過修改啓動文件的nohup重定向輸出方式爲 追加 “>>”
nohup python -u run.py >> run.log 2>&1 &
親測有效