首页/系统/Linux 运维命令速查/screen 会话保持与恢复
进程与作业69 条

screen 会话保持与恢复

老牌终端复用器:断线后会话还在(screen -r 恢复),-dmS 直接后台建会话;服务器上跑长任务的保险。

Linux 运维命令速查系统更新于 2026-10-13

screen 是什么

screen 是终端复用器:在一个物理终端里开多个虚拟会话,SSH 断开后会话依然活着,重新登录用 screen -r 就能连回原现场,包括滚动历史与正在运行的任务。它常被当作「带恢复能力的 nohup」使用——跑升级脚本、长时间数据传输、风险较高的重启操作时先开一个 screen 会话,即使网络抖动断线,任务也不会被挂断信号带走。

基本信息

适用平台GNU/Linux、macOS(多数发行版需安装 screen 包)
语法screen [-S 会话名],screen -ls 列出,screen -r 恢复
后台创建screen -dmS 名称 命令
分离会话会话内按 Ctrl+A 再按 D
结束会话screen -S 名称 -X quit
替代工具tmux(功能更强,快捷键体系更统一)

典型使用场景

  • 通过 SSH 执行升级或迁移,防止断线导致任务半途丢失。
  • 长时间运行的数据传输、编译、备份任务的后台托管。
  • 在同一台机器上并行开多个互不干扰的操作会话。
  • 排障时把会话共享给同事查看(注意共享意味着对方能看到全部内容)。
  • 临时替代服务化托管跑一次性长任务,完成后主动清理会话。

常用写法

常用写法
screen -S deploy                    # 新建并进入命名会话
screen -ls                          # 列出会话及状态(附加或分离)
screen -r deploy                    # 重新连上指定会话
screen -dmS backup ./backup.sh      # 后台创建会话直接跑任务
screen -S deploy -X quit            # 结束指定会话
screen -ls | grep Detached          # 找出遗留的分离会话
# 会话内操作:Ctrl+A 然后按 D 分离,Ctrl+A 后按 ? 查看快捷键

命令与操作对照

命令或操作作用使用要点
screen -S 名称新建命名会话命名后便于恢复与清理
screen -ls列出会话看清每个会话是附加还是分离状态
screen -r 名称恢复会话已被附加时会冲突,需先分离
screen -dmS后台创建会话适合脚本化启动长任务
Ctrl+A 再按 D分离会话先按组合键再单独按 D,不是同时按
-X quit结束会话任务结束后及时清理,避免堆积
分离会话的按键是 Ctrl+A 之后松开再按 D,不是三个键同时按。第一次用的人常因为说明不清楚以为功能失效,实际是按键方式不对。
会话是长期存在的资源:任务结束后忘记退出会在服务器上堆积大量分离会话,占用内存也干扰后续排查,建议定期用 screen -ls 检查并清理。
需要多人共享同一个会话时要清楚共享意味着对方能看到并操作会话内的一切;生产环境建议一人一会话,避免误操作与责任不清。

易错点

  • 断线后忘了会话名,需要先 screen -ls 确认状态再恢复;多个会话时不带名字直接恢复可能选错目标,误操作正在运行的任务。
  • 把 screen 当成服务托管方案:主机重启后会话不会自动恢复,长期服务应交给 systemd,screen 只适合一次性长任务。
  • 在会话里执行需要交互确认的高危操作,恢复时发现卡在提示上;长任务脚本要尽量避免交互式确认。
  • 会话堆积不清理,占用内存与文件描述符,排查问题时被无关会话干扰。

数据来源与参考

  • man 1 screen(GNU Screen 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌