如何从以前的 shell 恢复后台作业?

如何从以前的 shell 恢复后台作业?

可能的重复:
如何否认正在运行的进程并将其关联到新的屏幕外壳?

bg我启动了一个持续时间很长的命令。我不得不断开连接,因此在退出之前,我将其移至后台(使用 CTRL+Z 和)。

像这样的东西:

$ my_command
***command is beeing executed and is taking a long time***
^Z
[1]+  Stopped                 my_command
$ bg
[1]+ my_command &
$ exit

我重新连接并可以在进程列表中看到该命令,但无法使用fg.

$ fg
-bash: fg: current: no such job

如何在前台恢复我的工作?

答案1

如果您已经在某处启动了某些操作,将其设置为后台,现在需要将其附加到新终端,则可以使用reptyr重新连接它。 (该man页面将该命令总结为“将正在运行的程序重新设置为新终端的父级”。)

您无法在“jobs”命令中看到它或使用“fg”将其带到前台的原因是因为这些命令实际上是内置于 shell 中的。从技术上讲,它们不会将进程与您所连接的终端分离,因此当您退出 shell 时,它们应该也退出(当您尝试退出时应该会收到警告)。

相关内容