用screen解决 SSH 断连导致的编译失败问题(推荐)

在通过 SSH 远程服务器执行耗时较长的编译任务时,网络波动或 SSH 连接意外中断会导致编译进程被强制终止。

Connection to 主机 closed by remote host.
Connection to 主机 closed.

GNU Screen 是一个强大的工具,它允许用户在一个终端会话中运行多个进程,并且可以断开连接而不终止这些进程。

创建一个新的窗口

创建一个新的 Screen 会话

screen -S xxx-build

这里的 xxx-build 是你为这个会话指定的名字。给会话命名可以帮助你在有多个会话时更容易地进行管理。

执行任务

一旦进入了新的 Screen 会话,你就可以像平常一样执行任何命令,比如开始一个编译任务。Screen 的主要优点之一是即使你断开了与服务器的连接,这些任务也会继续运行。

断开当前会话

完成任务启动后,你可以通过快捷键组合 Ctrl+A 后跟 D 来断开当前会话,这样会话会在后台继续运行。如果你想从另一个终端关闭会话连接,也可以使用 screen -d 命令。而如果你希望退出并关闭窗口,则可以直接输入 exit

查看和重新连接到会话

想要查看所有活动的 Screen 会话,可以使用:

screen -ls

这将列出所有已打开的会话以及它们的状态。若要重新连接到某个特定的会话,只需使用它的 ID 或名称:

screen -r id或窗口名称