磁盘空间排查入门:用df和du找出谁占满了磁盘
【摘要】 磁盘满了,是 Linux 新手最常遇到的“突发故障”之一:服务写不进日志、软件装不上、网站打不开,报错却五花八门。别急着删文件,先用 df 和 du 两条命令把“谁占了空间”找出来。 一、先看整体:df -hdf 看的是文件系统整体的使用情况:df -h-h 的意思是按人类可读的单位显示(G、M)。重点看 Use% 和 Mounted on 这两列:根分区 / 快满了,就要继续往下查;如果是...
磁盘满了,是 Linux 新手最常遇到的“突发故障”之一:服务写不进日志、软件装不上、网站打不开,报错却五花八门。别急着删文件,先用 df 和 du 两条命令把“谁占了空间”找出来。
一、先看整体:df -h
df 看的是文件系统整体的使用情况:
df -h
-h 的意思是按人类可读的单位显示(G、M)。重点看 Use% 和 Mounted on 这两列:根分区 / 快满了,就要继续往下查;如果是 /var 或 /home 满了,排查范围就小得多。注意:df 看到的是“已分配”的空间,删除了但还被进程占用的文件,空间并不会立刻释放。
二、再找大户:du -sh 与 sort
du 看的是目录实际占用的空间。先看根目录下一级:
du -sh /* 2>/dev/null | sort -rh | head -10
这条命令会列出占用最大的前 10 个目录。发现 /var 特别大,就再往里走一层:
du -sh /var/* 2>/dev/null | sort -rh | head -10
一层一层往下钻,很快就能定位到真正的大户。2>/dev/null 是把没有权限的报错丢掉,免得刷屏;sort -rh 是按大小倒序排。
三、常见的大户与处理办法
- 日志文件:/var/log 下的旧日志,用 journalctl --vacuum-size=200M 清理 systemd 日志,或删除轮转后留下的旧 .gz 备份。
- 软件包缓存:apt clean 可以清理 Debian/Ubuntu 的下载缓存。
- 被删除但仍被占用的文件:用 lsof | grep deleted 找到它,重启相关服务或结束进程后空间才会真正释放。
- 临时文件:/tmp 下长期没人管的旧文件,确认无用后再清理。
四、几个容易踩的坑
第一,df 和 du 的数字对不上很正常:df 看文件系统,du 看目录,两者统计口径不同,正在被写入的大文件、已删除未释放的文件都会造成差异。第二,不要上来就 rm -rf /var/log 这类目录本身,删目录可能导致服务异常,删文件相对安全。第三,清理前先确认备份,日志删了就找不回来了。
五、一个固定的排查流程
磁盘告警后按这个顺序走:df -h 定分区,再用 du -sh 逐层找大目录,接着用 lsof 查已删除未释放的文件,最后按类型清理。把这四步练熟,下次磁盘满了,十分钟就能定位问题,不用再凭感觉乱删文件。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)