如果 nohup.out 被删除,如何获取正在运行的 nohup 进程的输出

Dco*_*der 3 freebsd nohup

我的 FreeBSD 8.4 机器上运行着一个 nohup 进程。最初我正在查看 nohup 控制台消息输出

tail -f nohup.out
Run Code Online (Sandbox Code Playgroud)

但我不小心删除了 nohup.out 文件。我现在如何访问控制台消息?

loo*_*ook 7

实际上这很容易。

  1. 首先返回命令历史记录以查找用于启动该进程的命令。例如,nohup my-long-process.sh &或者如果您还记得(很可能),请转到下一步。
  2. 现在找到您的进程的进程 ID。在这个例子中ps -ef|grep my-long-process
  3. 您将在启动进程的用户名后面看到 PID(进程 ID)和 PPID(父进程 ID)。你想要的PID就是左边的数字。假设2919在这个例子中。
  4. 由于该进程仍在运行,您将找到一个名为 的目录/proc/2919/fd。这2919是您从上面的命令获得的 PID ps
  5. 如果您使用 列出该目录,ls -l /proc/2919/fd您将看到一个(或两个)名为 等的链接12指向您的deleted文件。事实上,目标文件的名称将是/path/to/your/nohup.out (deleted).
  6. 你现在可以tail -f tail -f /proc/2919/fd/1

哦,如果你想看看你错过了什么,你可以less使用该文件less /proc/2919/fd/1