为什么当用于创建进程的 SSH 连接中断时,虚拟机上触发的进程/任务会停止?

为什么当用于创建进程的 SSH 连接中断时,虚拟机上触发的进程/任务会停止?

我在某个远程主机上运行着一台虚拟机。我通过 Putty 从我的台式电脑通过 SSH 连接到它。我在该虚拟机上触发了构建过程。

现在,如果我关闭 Putty SSH 会话,为什么构建过程会停止并且不会创建图像?

但是,如果我在虚拟机上分离一个 VNC 服务器实例,并通过台式电脑上的 VNC 查看器连接到它。现在我可以访问虚拟机的 GUI 环境。现在我启动一个终端。并开始构建过程。

现在,即使我关闭 VNC 客户端或关闭我的台式电脑,构建过程仍会发生。

在每种场景中它们有何不同?

答案1

为什么进程会被终止?当您连接时,您的默认 bash 会启动。现在当您启动一个进程时,它们是 bash 的子进程。如果连接关闭,bash 及其所有子进程都会被终止。


解决方案:使用screen。运行screen并启动构建过程。如果断开连接,则 screen 之后的所有运行都将继续。如果现在通过 ssh 重新连接并运行screen -RD,您将返回到会话并查看该过程。


VNC 仅将屏幕和鼠标/键盘的控制权转交给您的系统。所有进程的运行方式与您坐在系统前时一样。

相关内容