用linux做服务器或者本地开发环境久了,不少用户都会遇到一个奇怪问题:明明没有存储大量新数据,磁盘空间却频频报满,很大概率是各类软件卸载残留、过期日志缓存、已删除未释放的隐形文件偷偷占用了空间,掌握几个常用命令就能快速定位这些残留,下面分享实用的排查方法。
du命令:逐级定位大目录残留
du是linux最常用的磁盘占用查看工具,适合快速从顶层目录开始缩小范围,定位占用空间大的目录。最常用的用法是先查看根目录下各个一级目录的总大小:执行`du -sh /*`,就能直接看到每个目录的总占用,找到占用最大的目录后再深入排查。如果想要按大小排序,还可以用`du -h --max-depth=1 | sort -hr`,会自动把当前目录下的子目录按占用从大到小排序,大部分残留文件都藏在`/var/log`、`/tmp`、卸载后未清空的`/opt`旧软件目录中,顺着排序就能快速找到目标。

find命令:精准搜索零散大残留
如果想要直接找超过一定大小的残留文件,find命令会更高效。比如想要列出系统中所有大于100m的文件,可以执行`find / -type f -size +100m -exec ls -lh {} ⁄;`,输出结果会直接显示文件路径和大小,方便你判断哪些是没用的残留。如果要找过期的日志残留,还可以按修改时间筛选,比如`find /var/log -name "*.log.*" -mtime +30`,就能筛选出30天前修改的旧日志,这类文件大多是升级服务、迁移应用留下的备份,长期不清理会占用大量空间,确认后完全可以删除。

lsof:找出隐形的已删除残留
很多用户会遇到删除大文件后磁盘空间没释放的问题,这就是最常见的隐形残留:文件已经被删除,但仍被运行中的进程占用文件句柄,空间没有真正释放。执行`lsof | grep deleted`就能列出所有这类残留文件,找到对应的进程后,要么重启对应进程释放空间,要么直接清空文件就能快速回收空间,这类残留往往能占用几个g甚至几十g的空间,是很多新手用户容易忽略的点。

日常维护中定期用这几个方法排查残留,就能避免磁盘被无用文件占满,保证系统稳定运行,全文约640字。






























