🔰 一、核心概念
Screen 是 Linux 下的终端复用工具,解决两大痛点:
- 会话持久化:SSH 断开后任务继续运行
- 多工作区:单终端同时管理多个虚拟终端
📦 二、安装 Screen
sudo apt install screen
sudo yum install screen
brew install screen
🚀 三、基础操作速查表
1. 创建/进入会话
命令 | 作用 |
---|
screen | 创建匿名会话 |
screen -S session_name | 创建命名会话(推荐!) |
screen -r session_name | 恢复指定会话 |
screen -x | 共享他人会话(多人协作) |
2. 会话管理
快捷键 | 功能 |
---|
Ctrl + a → d | 分离会话(后台运行) |
Ctrl + a → k | 杀死当前窗口 |
Ctrl + a → \ | 彻底退出 screen |
exit | 关闭当前窗口(最后一个窗口退出则终止会话) |
3. 窗口导航
快捷键 | 功能 |
---|
Ctrl + a → c | 新建窗口 |
Ctrl + a → n | 切换到下一个窗口 |
Ctrl + a → p | 切换到上一个窗口 |
Ctrl + a → 0-9 | 跳转到第 N 个窗口 |
Ctrl + a → " | 窗口列表(可视化选择) |
🔧 四、高级功能
▶️ 会话持久化实战
screen -S build
make -j8
[detached]
screen -r build
📡 会话共享(协作/教学)
screen -S shared_session
screen -x shared_session
📜 日志记录
Ctrl + a → :logfile screenlog
Ctrl + a → :log on
Ctrl + a → :log off
📂 多会话管理
命令 | 作用 |
---|
screen -ls | 列出所有会话 |
screen -r 1024.session_name | 通过 ID 恢复会话 |
screen -X -S session_name quit | 强制终止指定会话 |
🛠 五、自定义配置(~/.screenrc)
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
defscrollback 5000
bindkey -k k2 screen
⚠️ 六、常见问题解决
❌ 恢复时报错 “There is no screen…”
screen -D -R session_name
📟 滚动屏幕
- 进入 复制模式:
Ctrl + a
→ [
- 用 方向键 或
PageUp
/PageDown
滚动 - 按
Esc
退出复制模式
🔐 会话密码保护
Ctrl + a → :password
输入密码后回车
💡 七、使用场景推荐
- 远程部署:中断网络不影响
apt upgrade
- 长任务监控:
top
/htop
持续运行 - 多任务并行:窗口1编译 + 窗口2测试 + 窗口3日志
- 结对编程:实时共享终端操作
- 危险操作保险:即使断连仍可恢复会话检查状态
📌 终极提示
- 会话命名是好习惯:避免恢复混乱
- 分离 ≠ 退出:
exit
才会结束进程 - 冲突时先分离:
screen -d session
再 -r
- 替代方案:
tmux
(功能更强大,但 screen 更轻量)
掌握以上操作,即可彻底告别 “SSH 断连任务崩溃” 的噩梦! 🚀