如何在 Linux 中关闭 SSH 客户端后防止后台进程停止?


Linux 中的后台进程是一个独立于 shell 运行的进程。它使我们能够离开终端窗口,而它仍然在后台执行,无需用户的任何交互。

Nginx 和 Apache Web 服务器是用于提供图像和动态内容的后台进程的最常见示例。

在 Linux 中,我们只需在进程后面附加符号 **&** 即可将其在后台启动。

请考虑以下示例:

sleep 10000 &

在上述命令中,我们使用了 sleep 语句,该语句将在我们刚刚在语句后面写入的指定时间内运行,最后以 & 符号结尾以在后台运行进程。

输出

immukul@192 ~ % sleep 10000 &
[1] 24101

现在进程正在后台运行。我们还可以使用以下命令检查进程:

jobs

输出

immukul@192 ~ % jobs

[1] running sleep 10000

现在我们知道了什么是后台进程以及如何运行它,我们现在可以专注于如何在关闭 **ssh** 连接后维护进程状态。

最广泛使用的方法是使用 Linux 提供的 **nohup** 命令。它代表“no hang up”(不挂断),其主要目的是执行命令,使其忽略 **hangup** 信号,因此即使 **ssh** 连接断开也不会停止。

只需将以下命令写入终端,即使 **ssh** 连接断开,您的进程也不会被终止:

nohup process_name &

在某些情况下,我们希望以较低的优先级运行任务,在这种情况下,我们使用以下命令:

nohup nice process_name &

**nice** 命令允许我们以较低的优先级运行进程。

另一种实现相同解决方案的方法是使用 **GNU Screen**,可以在此 链接 中找到。GNU Screen 允许我们在服务器上断开连接,同时所有进程将继续在后台运行。

另一种方法是建立双叉,在这种情况下,后台进程不会终止,请将以下命令运行到终端:

((mycommand &)&)

更新于:2021年7月30日

827 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告