好吧,就像这样,我必须通过ssh
从我家中运行一个程序进入我所在机构的服务器。我不希望我的程序在会话结束时被终止(我不知道screen
)。
我所做的是按Ctrl+Z
,然后输入bg
,以便在后台执行。
会议终止了。现在,当我从我的机构登录并输入ps -u username
时,它显示该程序仍在运行,但我无法将其置于前台。
我尝试了fg
和jobs
,但这些命令并没有给我任何输出
请有人帮帮我..
答案 0 :(得分:22)
如果您在不使用“screen”命令的情况下启动了该过程,则无法接管该过程。基本上,您无法接管在不同shell中启动的进程。
当您的会话终止时,所有bg进程都将进入分离状态。虽然您可能能够看到此类过程的详细信息,但您无法通过登录后将其转换为shell
答案 1 :(得分:9)
如果某个流程已成为孤儿,则无法重新启动"它到一个不同的shell并使用fg,bg,^ Z,^ C等来控制它。
您似乎在隐含地询问如何控制孤立的进程。由于您可以使用 ps 命令查看进程,因此您可以使用其pid。您可以使用此pid作为 kill 命令的参数,这将允许您停止,继续或终止该过程。您无法等待该过程完成,但您可以使用" kill -0< pid>"进行轮询以查看它是否仍然存在。命令。
答案 2 :(得分:5)
https://serverfault.com/questions/55880/moving-an-already-running-process-to-screen
提供另一种观点,最佳答案建议使用Reptyr。