UNIX 如何使用进程 ID 恢复进程?

UNIX 如何使用进程 ID 恢复进程?

我在恢复进程时遇到问题。

当我尝试使用 让一个进程转到前台时jobs,它可以工作,但如果我关闭 shell 并重新启动它,我的进程就不会出现在作业列表中。

我只知道进程名称及其 ID。如何将其置于前台?

答案1

我认为,一旦通过注销将终端与进程分离,您就无法重新连接。除非您使用像 screen 这样的实用程序来管理会话。

这可能会有帮助......

https://unix.stackexchange.com/questions/31824/how-to-attach-terminal-to-detached-process

答案2

如果您最初使用以下命令启动该过程,screen您可以稍后重新连接:

  1. 跑步screen -D -R
  2. 在那里运行你的命令。
  3. Ctrl A然后D断开与 的连接screen。该过程将继续运行,您将返回到原始 shell。

然后,稍后从任何终端:

  1. 跑步screen -D -R
  2. 您将返回到屏幕外壳,您的程序将从此处运行。

如果该进程已在运行,或者您无法通过启动它screen,则还有一个工具称为reptyr可以做到这一点。您可以在现有进程上使用它,然后关闭终端,然后打开一个新终端,并使用它将现有进程重新连接到新终端。

答案3

假设您没有使用screen并且该过程已使用“SIGTSTP”或“SIGSTOP”信号停止,您可以始终尝试向该过程发送“CONTINUE”信号,如下所示:

kill -SIGCONT $PID

$PID你的进程 ID 在哪里?

答案4

当您关闭终端时,进程会收到SIGHUP挂断信号。除非您使用screen或之类的实用程序nohup,或者程序的行为特别奇怪,否则SIGHUP将导致进程正常终止。

相关内容