du 和 df 对不上?查查被删了还被进程占着的文件
【摘要】 df 显示快满但 du 对不上,多半是已删除仍被进程占用的文件,lsof +L1 一行定位。
磁盘明明没存多少东西,df 看使用率却快满了,du 又对不上号。遇到这种“du 和 df 打架”,九成是有文件被删了,但进程还攥着它的句柄。
Linux 的文件是引用计数的:rm 只是删掉目录里的名字,只要还有进程打开着它,磁盘空间就一直不还。日志最常见——轮转或脚本 mv 走了日志,写日志的服务还在往旧文件里追加,文件几个 G 几个 G 地涨,ls 却看不见它。
查法一行:lsof +L1(或 lsof | grep deleted),列出“已删除但仍被占用”的文件,按大小排个序,元凶就在眼前。
处理:重启对应进程,空间立刻还回来。要是服务不能随便动,往 /proc/对应pid/fd/ 里那个文件清空一下,应急够用。
顺手记条规矩:轮转日志要么用 copytruncate,要么发信号让服务重开文件,别光 mv——不然第二天 df 又红了。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)