screen可解决SSH中断导致任务终止问题:一、用screen -S命名会话;二、Ctrl+a+d分离;三、screen -ls查看、screen -r恢复;四、Ctrl+a+c建多窗口;五、screen -d-r强制接管。

如果您在 macOS 上通过 SSH 连接远程服务器执行长时间任务,但网络波动或本地休眠导致连接中断,任务随之终止,则很可能是前台进程收到了 SIGHUP 信号。screen 通过构建独立于终端的守护进程与虚拟终端环境,使会话脱离物理连接约束。以下是多种可行的操作方法:
一、启动并命名新 screen 会话
为便于识别和后续恢复,建议始终使用自定义名称创建会话,避免默认无名会话带来的管理混乱。命名会话还能防止多个用户或脚本误操作同一会话。
1、打开 Mac 终端,确保已安装 screen。若未安装,运行 brew install screen 完成部署。
2、输入命令 screen -S mybackup,其中 mybackup 可替换为任意有意义的英文名称。
3、确认进入新会话后,终端提示符无明显变化,但此时所有运行的命令(如 tar、rsync、python 脚本)均处于 screen 托管之下。
二、分离当前 screen 会话
分离操作不会终止任何正在运行的程序,仅将当前终端控制权交还给原始 shell,同时让 screen 守护进程持续托管所有子进程。
1、在 screen 会话中按下 Ctrl + a,松开后再按 d 键。
2、屏幕将显示类似 [detached from 12345.mybackup] 的提示,表明已成功分离。
3、此时可安全关闭终端窗口、断开 SSH 或合上 MacBook 盖子,后台任务不受影响。
三、列出并恢复指定 screen 会话
当存在多个 screen 会话时,必须先明确目标会话的 ID 或名称,才能准确恢复,避免接入错误会话导致误操作或输出混淆。
1、重新登录远程服务器后,运行 screen -ls 查看全部会话状态。
2、输出中将显示类似 12345.mybackup (Detached) 的条目,括号内为当前状态。
3、输入 screen -r mybackup 即可直接恢复该命名会话;若名称冲突,则使用完整标识符,如 screen -r 12345.mybackup。
四、在会话内创建多窗口并切换
单个 screen 会话支持多个逻辑窗口,适用于同时监控日志、运行命令、编辑配置等场景,所有窗口共享同一会话生命周期,分离后全部持续运行。
1、在已附着的 screen 会话中,按下 Ctrl + a 后松开,再按 c 创建新窗口。
2、按下 Ctrl + a 后松开,再按 w 查看窗口列表,当前活动窗口标有星号(*)。
3、按下 Ctrl + a 后松开,再按 0~9 切换对应编号窗口,或按 n(下一个)、p(上一个)循环切换。
五、强制恢复已被占用的会话
当其他终端或 SSH 连接已附着到某一会话时,screen -r 将报错“There is a screen on...”;此时需采用强制方式接管,适用于独占调试或排障场景。
1、运行 screen -d -r mybackup,-d 参数先将原附着点分离,-r 紧接着恢复本终端控制权。
2、若仍提示冲突,可追加 -S 指定新会话名进行迁移: screen -S mybackup_new -d -r mybackup。
3、执行后原会话将被重命名为 mybackup_new,并立即附着至当前终端。

















