lsof 显示 tmp 增长文件标记为已删除

lsof 显示 tmp 增长文件标记为已删除

我有一个 cron,它生成了大量(15GB)的 PHP 警告并将它们写入日志文件中。

我终止了该进程,并且作为临时措施,我停止将 stderr 重定向到 stdout,这样我就不会填满我的存储空间。

更改后,我继续收到相同的“高 IO”警告,并且服务器存储暂时增加然后回到以前的大小。原始日志文件是空的。

我发现一个文件lsof -p <PID of cron>正在变得越来越大。

sh      25626 root   10u   REG  202,1 21280244045     773 /tmp/tmpfZ14vFH (deleted)

该文件被标记为已删除,我无法在 /tmp 目录中找到它。

请对此提供一些见解。

当进程运行时,操作系统是否将 stderr 写入临时文件中?

答案1

您必须循环(启动/停止)持有文件句柄的进程。

检查ps -ef |grep 25626以找到持有它的进程,如果可能,则循环它。它将允许释放文件句柄,并清除磁盘空间。

我知道你已经这样做了(发现这sh是有问题的过程),但是这是我在笔记中使用的查找这些神秘删除文件的命令(可能是以前在 stack exchange 上找到的): lsof | grep deleted | numfmt --field=7 --to=iec | head

相关内容