如何将一个孤立的后台进程恢复到前台?

47

事情是这样的,我需要通过ssh连接到机构服务器并从家里运行一个程序。但我不希望当会话关闭时终止我的程序(我不知道screen)。

我按下Ctrl+Z,然后输入bg让它在后台执行。然后会话被关闭了。现在,当我从机构机器登录并输入ps -u username时,它显示该程序仍在运行,但我无法将其带到前台。

我尝试使用fgjobs命令,但这些命令没有给我任何输出。
请有人帮帮我。

3个回答

39
如果您在没有使用 "screen" 命令的情况下启动了进程,则无法接管该进程。基本上,您不能接管在不同 shell 中启动的进程。
当您的会话终止时,所有后台进程都将进入分离状态。虽然您可能能够查看此类进程的详细信息,但无法在登录后将它们转移到 shell 的前台执行。

13
如果一个进程被孤立,你不能将其“重定向”到不同的shell并使用fgbg^Z^C等控制它。
看起来你在暗示如何控制一个孤立的进程。由于你可以使用ps命令查看该进程,因此你有它的pid。你可以将该pid作为参数传递给kill命令,这将允许你停止、继续或终止该进程。你无法等待进程完成,但是你可以轮询使用kill -0 <pid>命令来检查是否仍存在该进程。

8

2
另一篇帖子的简短回答:这是可能的。安装reptyr,然后运行reptyr [PID] - 但如果一个进程(例如,一个bash脚本)启动了另一个(子)进程,则可能无法正常工作。 - BurninLeo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接