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