终端复用神器对决:Tmux vs. Screen 全方位指南
在 Linux 远程运维或开发中,我们经常会遇到这样的问题:正在运行一个耗时几小时的任务,结果网络波动导致 SSH 断开,任务被迫中断。终端复用器(Terminal Multiplexer) 正是为此而生。
本文将深度对比老牌劲旅 Screen 与现代标杆 Tmux,并提供详细的使用教程。
核心概念:什么是终端复用?
终端复用器的核心功能可以概括为:
- 会话保护:断开连接后,后台任务继续运行,重新登录后可“恢复(Attach)”现场。
- 分屏操作:在同一个窗口内切分成多个小窗口(Panes)。
- 多会话管理:同时开启多个独立的任务环境。
一、 Tmux vs. Screen 深度对比
| 特性 | Screen | Tmux |
|---|---|---|
| 诞生时间 | 1987年 (历史悠久) | 2007年 (现代主流) |
| 默认前缀键 | Ctrl + a | Ctrl + b |
| 配置灵活性 | 配置文件较复杂 | 极其灵活,支持复杂脚本 |
| 状态栏 | 基本没有,需繁琐配置 | 默认开启,信息极丰富 |
| 分屏能力 | 垂直/水平分屏支持较晚 | 原生支持极佳,支持无限嵌套 |
| 资源占用 | 极低 | 低 (略高于 Screen) |
总结建议:
- 如果你经常需要分屏开发、自定义高度美化的状态栏,请首选 Tmux。
- 如果你在极其古老、资源极其受限的系统上工作,或者习惯了
Ctrl+a的手感,Screen 依然是可靠的选择。
二、 Tmux 详细用法
Tmux 采用三层结构:Session(会话) > Window(窗口) > Pane(面板)。
1. 基础命令
- 启动新会话:
tmux - 新建命名会话:
tmux new -s my_work - 查看会话列表:
tmux ls - 进入(恢复)会话:
tmux a -t my_work - 关闭会话:
exit或tmux kill-session -t my_work
2. 常用快捷键(需先按前缀键 Ctrl + b)
会话管理
d:分离(Detach)当前会话,返回物理终端。s:交互式选择会话列表。分屏(Pane)
%:左右垂直分屏。":上下水平分屏。x:关闭当前小窗口。方向键:在各小窗口间跳转。窗口(Window)
c:创建新窗口。p/n:切换到上一个/下一个窗口。0-9:根据编号直接跳到对应窗口。
三、 Screen 详细用法
Screen 的逻辑相对直接,通常以单个窗口为单位。
1. 基础命令
- 启动新会话:
screen - 新建命名会话:
screen -S my_session - 查看会话列表:
screen -ls - 恢复会话:
screen -r my_session - 强行接管会话:
screen -d -r my_session(如果该会话在别处已登录)
2. 常用快捷键(需先按前缀键 Ctrl + a)
- 分离会话:
d(Detach) - 创建新窗口:
c(Create) - 切换窗口:
n(Next) 或p(Previous) - 查看窗口列表:
"(双引号) - 分屏(较新版本):
S(大写):水平拆分。|(竖线):垂直拆分。Tab:在拆分区域间跳动。X(大写):关闭当前区域。
四、 进阶配置:让工具更好用
1. Tmux 配置文件 (~/.tmux.conf)
许多人会将前缀键改回 Ctrl+a 并开启鼠标支持:
| |
2. Screen 配置文件 (~/.screenrc)
如果你想在 Screen 下方显示类似状态栏的效果:
| |
五、 最佳实践总结
- 挂起任务:连接远程服务器 -> 执行
tmux-> 运行命令 -> 按Ctrl+b, d离开。哪怕关机睡觉,任务也在跑。 - 多人协作:多个人登录同一个服务器,同时
tmux a -t same_session,可以看到同一个屏幕的操作,适合远程结对编程或演示。 - 不要在 Tmux 里再开 Screen:嵌套终端复用器会导致快捷键极其混乱,应尽量避免。
结语:如果你是初学者,建议从 Tmux 开始学起,它的逻辑更符合现代习惯。一旦掌握,你会发现再也离不开它。