天天看点

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# 打印必备

继续阅读