磁盘100%

记一次磁盘 100 % 的问题解决。(ps: 可以直接参考:https://scoutapm.com/blog/understanding-disk-inodes)

发现

  • tab 自动补全不好用

使用 tab 去自动补全的时候,出现下面的提示:

1
cannot create temp file for here-document: No space left on device

重点是: No space left on device

  • 上传 jar 包失败

解决

  • df -h 查看磁盘信息(-h 人性化输出)

输入图片说明

/dev/sda2 磁盘使用率 100%

  • find / -size +100M -printf (查找大文件)

输入图片说明

  • ll -h (cd 到,刚刚的大文件目录)

输入图片说明

可以看到 一个日志文件达到了 80G

  • tail -n 50 log.log(查看最后50行)

输入图片说明

发现日期都是历史的(两月前的)

  • ps -ef | grep financial(financial 为 此日志文件的输入来源)

输入图片说明

没找到(这个项目已经早停掉了)

  • rm log.log (确定当前日志文件没有用后,在执行删除,否则先备份)

输入图片说明

  • df -h (再次查看磁盘使用情况,恢复正常)

输入图片说明

  • end

模拟一个实际问题

如果这个文件没有被占用,则使用上述步骤,完美解决。但是,如果一个文件被占用的情况下,会发现 执行 rm 之后,ll 查看文件是消失了,但是 df 查看磁盘并么有恢复正常。
下面来模拟一下。

  • 写一个死循环(python while)

  • 执行

输入图片说明

  • 多次查看文件大小 (111.log 文件,是在不断增加的)

输入图片说明

  • rm 并 ls 查看,文件消失

输入图片说明

输入图片说明

  • 使用 df 查看磁盘使用率(删除前后对比,发现并没有变化)

删除之前的 log 文件

删除之后的 log 文件

  • lsof | grep deleted

输入图片说明

输入图片说明

当前文件的状态是 deleted ,并没有从磁盘删除,被占用状态。

  • kill 之后,恢复正常 (之前是 25%,删除之后是23%,日志文件大小 2G 多 )

20190920082335_c6d2daf790a78a9226e01613719c9809.png

Look at your mood.