不知何故,我正在开发的 Python 服务器将 50gb 的数据记录到 /tmp/blabla.log,填满了 rootfs 分区,我注意到基本命令失败了,如下所示:root@server:/# crontab -e /tmp/crontab.FfvjqH: 设备上没有剩余空间
因此,我执行了 rm -rf /tmp/blabla.log 并且文件消失了,无法用 ls 或 tail 看到......但是空间不足的错误仍然存在。df -h 仍然报告 rootfs 已被 100% 使用,并且没有反映我删除了 50gb 文件。
我可以通过将一些文件移动到另一个分区来释放更多空间,并且系统正常,但我没有恢复 50gb 的可用空间。
可能是什么问题呢?
我自己的答案:从 rootfs 分区移动大约 3gb 的文件后,我敢于重新启动服务器,但可能会因磁盘空间问题导致服务器无法重新启动,但幸运的是,它成功重新启动,并且重新启动后 df -h 报告了正确的可用空间量。因此,系统重新启动似乎是答案。
答案1
您已删除该文件,但文件描述符仍处于打开状态并由正在运行的脚本使用。停止脚本,您应该会恢复空间。最好使用或截断 > /tmp/blabla.log
文件cp /dev/null /tmp/blabla.log
答案2
您可能需要使用 lsof 检查文件是否仍由进程/服务保留。例如,对于 tomcat,如果您在服务运行时删除 catalina.out,它将“删除”该文件,但该文件仍将被 tomcat 服务锁定,直到您重新启动。您可以使用 找到它,lsof | grep <filename>
如果有的话,它会在命中后显示(已删除)。