天天看點

linux:清空日志無法改變日志檔案大小

問題描述:

用 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 環境下日志檔案分割(清空)後大小無法改變問題

下一篇: C# 列印必備

繼續閱讀