問題描述:
用 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 &
親測有效
4.參考文檔
解決linux 環境下日志檔案分割(清空)後大小無法改變問題