假设我 ssh 到远程主机,在其上启动几个进程并在进程终止之前断开连接。这些过程会发生什么?
他们继续吗?
答案1
由于该进程是您通过 ssh 打开的 shell 的子进程,因此一旦您注销 shell(例如通过断开连接),该进程就会终止。
您可以使用不同的方法来解决此问题:
nohup
使用(不挂断)启动程序并取消它:nohup somecommand & disown %1
这会将所有输出重定向到一个文件
$PWD/nohup.out
,如果您想丢弃输出,请将其通过管道传输到/dev/null
(在somecommand
和之间&
)使用终端多路复用器,例如 GNU Screen 或 tmux:
tmux #Inside tmux somecommand
Ctrl然后使用+B和 来从 tmux 会话中分离D。您现在可以安全地断开连接。当你想在另一个 shell 中恢复 tmux 会话时,只需运行
tmux a
你现在又回到了你离开的外壳中。