如何在 Linux 上访问已删除的打开文件(正在运行的 crontab 任务的输出)?

如何在 Linux 上访问已删除的打开文件(正在运行的 crontab 任务的输出)?

我有一个每小时运行一小时的 crontab 作业,每 10 分钟运行一些mtr( traceroute) 输出(在通过电子邮件发回给我之前,这将持续一个多小时),我想查看到目前为止的当前进度。

在Linux上,我使用过lsof -n | fgrep cronlsof类似于BSD的fstat),似乎我可能找到了该文件,但它被注释为已删除(临时文件的标准做法是打开后立即删除):

COMMAND     PID       USER   FD      TYPE     DEVICE  SIZE/OFF       NODE NAME
...
cron      21742       root    5u      REG      202,0      7255      66310 /tmp/tmpfSuELzy (deleted)

并且不能再通过其先前的名称进行访问:

# stat /tmp/tmpfSuELzy
stat: cannot stat `/tmp/tmpfSuELzy': No such file or directory

如何访问已删除但仍打开的文件?

答案1

该文件可以通过/proc文件系统访问:您已经知道PIDFDlsof输出。

cat /proc/21742/fd/5

相关内容