- 首先df -h可以查看磁盘的使用情况
- du -h --max-depth=1 可以查看当前目录下每一个一级目录占用空间的大小
- 如果用了以上的方法,还是没有发现,究竟是哪个文件占用了这么多空间,那么极有可能是因为:某个进程在写入文件的时候,日志被人rm删除了。 这样是无法用ls或者文件管理命令找到这个文件的。
解决方法
- top命令查看当前有哪些活跃进程
- lsof -p 进程id,查看某个进程打开的文件描述符
为什么进程写入文件时,文件被rm但还占用空间?
- 首先明白linux中每个文件都有i_count和i_link;
- i_count表示文件被进程的引用次数;
- i_link表示硬链接个数
- rm命令本质上是减少i_link的个数
- 只有i_count和i_link都为0时,才表示该文件被彻底删除
- 如果有进程引用该文件,rm掉这个文件之后,i_link为0但是i_count不为0,所以文件还没占用空间。
那么如果正确的清理日志文件?
echo " " > 文件名