有时我会使用 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 &