我在恢复进程时遇到问题。
当我尝试使用 让一个进程转到前台时jobs
,它可以工作,但如果我关闭 shell 并重新启动它,我的进程就不会出现在作业列表中。
我只知道进程名称及其 ID。如何将其置于前台?
答案1
我认为,一旦通过注销将终端与进程分离,您就无法重新连接。除非您使用像 screen 这样的实用程序来管理会话。
这可能会有帮助......
https://unix.stackexchange.com/questions/31824/how-to-attach-terminal-to-detached-process
答案2
如果您最初使用以下命令启动该过程,screen
您可以稍后重新连接:
- 跑步
screen -D -R
- 在那里运行你的命令。
- 按
Ctrl A
然后D
断开与 的连接screen
。该过程将继续运行,您将返回到原始 shell。
然后,稍后从任何终端:
- 跑步
screen -D -R
- 您将返回到屏幕外壳,您的程序将从此处运行。
如果该进程已在运行,或者您无法通过启动它screen
,则还有一个工具称为reptyr
可以做到这一点。您可以在现有进程上使用它,然后关闭终端,然后打开一个新终端,并使用它将现有进程重新连接到新终端。
答案3
假设您没有使用screen
并且该过程已使用“SIGTSTP”或“SIGSTOP”信号停止,您可以始终尝试向该过程发送“CONTINUE”信号,如下所示:
kill -SIGCONT $PID
$PID
你的进程 ID 在哪里?
答案4
当您关闭终端时,进程会收到SIGHUP
挂断信号。除非您使用screen
或之类的实用程序nohup
,或者程序的行为特别奇怪,否则SIGHUP
将导致进程正常终止。