问题描述:
用 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 &
亲测有效