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

Sam*_*amK 23 bash job-control background-process

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

我启动了一个持续很长时间的命令。我不得不断开连接,所以我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
Run Code Online (Sandbox Code Playgroud)

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

$ fg
-bash: fg: current: no such job
Run Code Online (Sandbox Code Playgroud)

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

小智 30

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

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