我应该关心 lsof 中的大(已删除)文件吗?

我应该关心 lsof 中的大(已删除)文件吗?

我们一直在努力清理/opt安装座中的一些空间。空间消耗的一大罪魁祸首是我们运行的某些进程的日志文件(每个进程大约 2 到 12 GB)。

我们通过截断它们来清理它们。然而,这似乎扭曲了我们的输出df -H

/dev/mapper/Sys-opt     76G    72G      0 100% /opt

在此目录上运行时du -sh *,大小不相加。运行时lsof | grep log,我发现我们删除的许多文件仍然显示(deleted)在末尾。

我的问题是,(a)我应该关心这个吗?(b)有没有办法让我df -H恢复正常,而不需要重新启动盒子/这些进程?重新启动进程是否可以修复它(我看到相同日志的多个条目,这些条目来自我知道最近重新启动的进程)?

答案1

Unix 使用引用计数来确定文件是否正在使用或者数据是否可以删除/重用。

一个打开的文件句柄算作一个引用 - 因此在它关闭之前,该空间将被占用。使用打开的文件句柄重新启动进程将关闭文件句柄,如果它已从目录结构中删除,那么当它的引用计数降至零时,它就会消失。

所以是的 - 重新启动您的进程将使该文件消失。

如果守护进程的日志记录过于详细,则可能会发生这种情况 - 尽管一些善意的人进行了清除,但它仍在写入其日志文件。

相关内容