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 環境下日誌文件分割(清空)後大小無法改變問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章