如何在 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 &)&)
广告