使用screen可防止ssh中断导致任务终止:先安装screen,再用screen -s创建命名会话,ctrl+a+d分离,screen -r恢复,异常时用screen -d -r强制恢复。

如果您通过SSH远程连接Linux服务器执行长时间运行的任务,但网络不稳定导致SSH会话意外中断,则正在运行的进程可能被终止。screen工具可创建独立于终端的会话环境,使任务在后台持续运行。以下是实现该目标的具体步骤:
一、安装screen工具
部分Linux发行版默认未预装screen,需先确认是否已安装并按需部署。
1、执行screen --version命令检查是否已安装screen。
2、若提示命令未找到,则根据系统类型执行对应安装命令:Ubuntu/Debian系统运行sudo apt update && sudo apt install screen。
3、CentOS/RHEL系统运行sudo yum install screen或sudo dnf install screen(视版本而定)。
二、启动新screen会话
启动一个命名的screen会话,便于后续识别与恢复,避免多个匿名会话混淆。
1、输入命令screen -S task_session,其中task_session为自定义会话名。
2、回车后进入全新shell环境,此时所有命令均在此screen会话中运行。
3、可执行长时间任务,例如tail -f /var/log/syslog或python3 long_script.py。
三、分离当前screen会话
分离操作使screen会话在后台持续运行,同时释放当前SSH终端,允许安全退出或重连。
1、按下快捷键组合Ctrl + A,松开后再按D键(即“detach”)。
2、终端显示[detached from 12345.task_session]表示已成功分离。
3、此时可直接关闭SSH窗口或断开网络,后台任务不受影响。
四、重新连接已存在的screen会话
当需要查看或交互正在运行的任务时,可通过会话名恢复原终端状态。
1、使用SSH重新登录服务器。
2、执行命令screen -r task_session,其中task_session需与创建时一致。
3、若存在多个分离会话,可先运行screen -ls列出全部会话ID及名称,再指定完整ID如screen -r 12345.task_session。
五、强制恢复被占用的会话
当原SSH连接异常终止,screen可能残留“Attached”状态,导致无法正常-r连接。
1、运行screen -ls,若显示类似12345.task_session (Attached)条目,则需强制恢复。
2、执行命令screen -d -r task_session,其中-d参数先将挂起会话设为detached状态。
3、若仍失败,可尝试使用完整会话ID:screen -d -r 12345.task_session。










