记一次磁盘 100 % 的问题解决。(ps: 可以直接参考:https://scoutapm.com/blog/understanding-disk-inodes)
发现
- tab 自动补全不好用
使用 tab 去自动补全的时候,出现下面的提示:
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 查看磁盘使用率(删除前后对比,发现并没有变化)
- lsof | grep deleted
当前文件的状态是 deleted ,并没有从磁盘删除,被占用状态。
- kill 之后,恢复正常 (之前是 25%,删除之后是23%,日志文件大小 2G 多 )