ls -lh文件大小比du -sh大

ls -lh文件大小比du -sh小的情况参考 https://blog.csdn.net/wangtingting_100/article/details/80913868

du显示的是文件占block大小,通常1byte的文件,du大小是4bytes,这个是可以理解的。
可偏偏ls -lh的结果比du -sh的要大,这是为什么呢?

$ ls -lh xxx.log
-rw-rw-r-- 1 app app 152G Apr 25 09:44 xxx.log


$ du -sh xxx.log 
228M    xxx.log

#--apparent-size,效果与ll相同。因为--apparent-size查看的文件实际大小非占用block大小。
$ du --apparent-size  -lh xxx.log 
152G    xxx.log

原因是文件所占磁盘被释放,但内核并没有,重启后好了。

$ df -h #磁盘大小已经恢复正常
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G  3.3G   44G   7% /
/dev/vdb        197G  8.3G  189G   5% /data


总结:
清理有进程不停写入的文件,在不停进程情况下, 虽可以采用sudo bash -c "echo > /logs/xxx.log"方式有效避免打开句柄未正常关闭问题。但会偶现磁盘正常释放,但内核状态并未更新的情况。

猜你喜欢

转载自blog.csdn.net/wangtingting_100/article/details/89682240
今日推荐