如何查看我删除的文件的内容,但进程仍在写入

Mag*_*o C 3 linux io-redirection nohup deleted-files

我开始了一项非常长时间运行的工作(预计需要 6 天才能完成),并且想查看其输出,所以我这样做了:

$ nohup ./thejob.sh > out.txt
Run Code Online (Sandbox Code Playgroud)

当我需要查看工作进度时,我会tail - f归档。

但该out.txt文件增长太多,我删除了该文件并重新创建了它。

$ rm out.txt
$ touch out.txt
Run Code Online (Sandbox Code Playgroud)

此后,没有输出发送到文件。我认为该作业失去了与文件的绑定。我可以通过使用看到作业正在运行top,但我再也看不到它的进度了。

有什么办法可以再次看到吗?

Eri*_*ouf 5

旧文件还没有消失,如果您知道写入该文件的进程的 PID,则可以访问它。你可以去/proc/<pid>/fd看看1是哪一个stdout

但这也意味着您没有从尝试删除文件中回收任何空间。

此外,一旦进程退出,该文件将被删除。

  • @MagnoC如果进程仍在运行, `cat /proc/the-pid/fd/1 &gt; returned-file` 应该给你一个新的副本。如果它链接到同一个索引节点(我不确定是否是这种情况),您可以使用 ln 代替 (2认同)