如何在注销后保持作业运行?

如何在注销后保持作业运行?

可能重复:
如何分叉一个当 shell 退出时不会终止的进程?

有时我会使用 NX 远程连接到我的 Ubuntu。然后我在后台运行一些作业,例如:

$ /path/to/script.pl &

然而,当我注销时,作业停止运行。

我怎样才能让它们在我退出后继续运行?

答案1

我认为另一种选择是使用屏幕

答案2

当 shell 结束时,它会发送 SIGHUP 来终止其进程组中的所有进程。

如果您运行 bash shell,您可以键入disown以在注销后保持其运行。这会将其从将向其发送信号的进程列表中删除。

或者,您可以使用 启动脚本nohup,但运行命令时必须记住这一点。这会告诉您的命令忽略 shell 将发送的 SIGHUP 信号。这适用于任何 shell。

答案3

“关闭远程 shell 后保持 Linux 脚本继续运行”了解如何使用 screen 命令执行此操作。

答案在于名为 screen 的命令行工具。

Screen 允许您在虚拟屏幕上启动一个进程,然后分离该屏幕并执行其他操作(包括注销)。您也可以在注销并再次登录后重新连接屏幕。

如果您的远程 Linux 机器上没有 screen 命令,请先从源代码或使用您最喜欢的包管理器安装它。然后登录到您的远程机器并运行以“screen”为前缀的所需命令。例如:

屏幕顶部

现在要分离屏幕,请使用 CTRL+a,然后按 d。这将分离您的屏幕,您可以进行任何其他操作,包括退出远程会话。

随时重新连接屏幕就像运行以下命令一样简单:

屏幕-r

答案4

您可以使用禁止

nohup /path/to/script.pl &

相关内容