一个进程正在创建大量日志文件并删除它。
许多已删除的文件在/proc/pid/fd
目录中的链接已损坏。
这些文件句柄需要被进程关闭吗?这样我就不会看到损坏的链接。我使用以下命令计算文件描述符的数量:
ls /proc/<pid>/fd | wc -l
答案1
如果进程打开了一个文件并且该文件被删除,则该文件在.这是完全正常的。断开的链接本身并不表示出现问题。/proc/PID/fd
如果程序保持大量文件打开,但没有对它们执行任何操作,则可能表明程序中存在错误。保持已删除的文件打开有一些用途,但对于日志文件来说,它没有任何意义,因此如果这些确实是日志文件,则程序中可能存在错误。您必须联系程序的作者来修复它(如果您有源代码,则可以自己修复)。
无法通过 对该过程采取行动/proc
。您可以将调试器附加到进程并使其关闭文件,但不能保证结果。这就像在爬上屋顶的人身上拆除梯子一样:他们很可能会摔倒并受重伤。如果你想回收磁盘空间,你可以通过以下方式截断文件/proc
:shell 命令就可以做到这一点。如果程序继续写入文件,这将再次开始使用磁盘空间;避免这种情况的一种方法是使用调试器将进程引导至打开的文件描述符,但我们又回到了无法保证的结果。: >/proc/PID/fd/NUMBER
dup2
/dev/null