终端复用神器对决:Tmux vs. Screen 全方位指南

在 Linux 远程运维或开发中,我们经常会遇到这样的问题:正在运行一个耗时几小时的任务,结果网络波动导致 SSH 断开,任务被迫中断。终端复用器(Terminal Multiplexer) 正是为此而生。

本文将深度对比老牌劲旅 Screen 与现代标杆 Tmux,并提供详细的使用教程。


核心概念:什么是终端复用?

终端复用器的核心功能可以概括为:

  1. 会话保护:断开连接后,后台任务继续运行,重新登录后可“恢复(Attach)”现场。
  2. 分屏操作:在同一个窗口内切分成多个小窗口(Panes)。
  3. 多会话管理:同时开启多个独立的任务环境。

一、 Tmux vs. Screen 深度对比

特性ScreenTmux
诞生时间1987年 (历史悠久)2007年 (现代主流)
默认前缀键Ctrl + aCtrl + 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
  • 关闭会话exittmux 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 并开启鼠标支持:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 将前缀键改为 Ctrl+a
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 开启鼠标点击、分屏调整支持
set -g mouse on

# 设置状态栏颜色
set -g status-bg black
set -g status-fg white

2. Screen 配置文件 (~/.screenrc)

如果你想在 Screen 下方显示类似状态栏的效果:

1
2
3
# 启用底部的状态行
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][ %{B}%Y-%m-%d %{W}%c %{g}]'

五、 最佳实践总结

  1. 挂起任务:连接远程服务器 -> 执行 tmux -> 运行命令 -> 按 Ctrl+b, d 离开。哪怕关机睡觉,任务也在跑。
  2. 多人协作:多个人登录同一个服务器,同时 tmux a -t same_session,可以看到同一个屏幕的操作,适合远程结对编程或演示。
  3. 不要在 Tmux 里再开 Screen:嵌套终端复用器会导致快捷键极其混乱,应尽量避免。

结语:如果你是初学者,建议从 Tmux 开始学起,它的逻辑更符合现代习惯。一旦掌握,你会发现再也离不开它。