当远程主机断开连接时,远程运行进程会发生什么?

当远程主机断开连接时,远程运行进程会发生什么?

假设我 ssh 到远程主机,在其上启动几个进程并在进程终止之前断开连接。这些过程会发生什么?

他们继续吗?

答案1

由于该进程是您通过 ssh 打开的 shell 的子进程,因此一旦您注销 shell(例如通过断开连接),该进程就会终止。

您可以使用不同的方法来解决此问题:

  1. nohup使用(不挂断)启动程序并取消它:

    nohup somecommand &
    disown %1
    

    这会将所有输出重定向到一个文件$PWD/nohup.out,如果您想丢弃输出,请将其通过管道传输到/dev/null(在somecommand和之间&

  2. 使用终端多路复用器,例如 GNU Screen 或 tmux:

    tmux
    #Inside tmux
    somecommand
    

    Ctrl然后使用+B和 来从 tmux 会话中分离D。您现在可以安全地断开连接。当你想在另一个 shell 中恢复 tmux 会话时,只需运行

    tmux a
    

    你现在又回到了你离开的外壳中。

相关内容