Screen 学习
Screen 学习笔记
前言
GNU Screen 和 tmux 一样,是经典的「终端复用器」,即使 SSH 断线,任务也不会中断。
1️⃣ 安装
| 系统 | 命令 |
|---|---|
| Ubuntu / Debian | sudo apt update && sudo apt install screen |
| CentOS / Fedora | sudo yum install screen 或 sudo dnf install screen |
| macOS | brew install screen |
安装完直接敲 screen -v 能看到版本号即成功。
2️⃣ 5 个核心概念(与 tmux 对照)
| GNU Screen | 类比 tmux | 说明 |
|---|---|---|
| screen 会话 | session | 任务容器,断线后仍运行 |
| window | window | 一个窗口,多个 shell |
| region | pane | 分屏区域(只能左右/上下二选一) |
| detach | detach | 把会话丢到后台 |
| attach | attach | 把后台会话拉回前台 |
3️⃣ 最常用命令
🔹 启动 & 命名
screen -S work # 新建并进入名为 work 的会话
🔹 断线 & 重连
| 场景 | 命令 |
|---|---|
| 主动离开(会话保持后台) | Ctrl+a d |
| 查看所有会话 | screen -ls |
| 重连 | screen -r work 或 screen -r 12345(PID) |
| 强制抢占别人已连的会话 | screen -d -r work |
🔹 窗口操作
| 功能 | 快捷键 |
|---|---|
| 新建窗口 | Ctrl+a c |
| 下一个 / 上一个窗口 | Ctrl+a n / Ctrl+a p |
| 窗口列表 | Ctrl+a "(数字选) |
| 重命名窗口 | Ctrl+a A |
| 关闭窗口 | 输入 exit |
🔹 分屏(region)
| 功能 | 快捷键 |
|---|---|
| 水平分屏(上下) | Ctrl+a S |
| 垂直分屏(左右) | `Ctrl+a |
| 光标在分区间移动 | Ctrl+a <Tab> |
| 关闭当前分区 | Ctrl+a X |
| 仅保留当前分区 | Ctrl+a Q |
注意:screen 的 region 只能两级,不能无限级嵌套。
4️⃣ 复制/滚动文本(copy mode)
- 进入复制模式:
Ctrl+a [ - 上下翻页:
↑ ↓(或 PgUp / PgDn) - 开始选择:空格 → 移动光标 → Enter(复制)
- 粘贴:
Ctrl+a ]
5️⃣ 会话共享(双人实时协作)
# 第 1 人
screen -S pair
# 第 2 人(同一机器)
screen -x pair
两人可同时看到同一个终端,常用于结对调试。
6️⃣ 配置小甜点(~/.screenrc)
# 开启下方状态栏
hardstatus alwayslastline "%{= kG}[%H] %-w%{= kW}%n %t%{-}%+w %=%{..G} %Y-%m-%d %c"
# 允许鼠标滚动
termcapinfo xterm* ti@:te@
# 设置默认窗口名
shelltitle "$ |bash"
保存后 screen -r 重连即可生效。
7️⃣ 一条命令速查表(建议收藏)
Ctrl+a c 新建窗口
Ctrl+a " 窗口列表
Ctrl+a A 重命名窗口
Ctrl+a n/p 下一个/上一个窗口
Ctrl+a S 水平分屏
Ctrl+a | 垂直分屏
Ctrl+a <Tab> 在分区间移动
Ctrl+a d 脱离会话
Ctrl+a ? 帮助(全部快捷键)
8️⃣ 30 秒工作流演示
# 1. 登录服务器
ssh user@host
# 2. 创建会话
screen -S deploy
# 3. 左上编译,右下看日志
Ctrl+a S # 水平分屏
Ctrl+a <Tab> # 切到下方
Ctrl+a c # 新建窗口
make -j8 # 上窗口编译
Ctrl+a <Tab> # 切回下方
tail -f log # 下窗口日志
# 4. 下班
Ctrl+a d # 脱离会话
# 5. 回家重连
screen -r deploy
📚 延伸阅读
- 官方手册:GNU Screen