我们一直在努力清理/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 使用引用计数来确定文件是否正在使用或者数据是否可以删除/重用。
一个打开的文件句柄算作一个引用 - 因此在它关闭之前,该空间将被占用。使用打开的文件句柄重新启动进程将关闭文件句柄,如果它已从目录结构中删除,那么当它的引用计数降至零时,它就会消失。
所以是的 - 重新启动您的进程将使该文件消失。
如果守护进程的日志记录过于详细,则可能会发生这种情况 - 尽管一些善意的人进行了清除,但它仍在写入其日志文件。