tmux 快速入门指南

tmux 是一个终端复用器(terminal multiplexer)。简单说,它可以让你在一个 SSH/终端连接里同时运行多个终端,并且即使 SSH 断开,程序也能继续运行。

如果你经常用 SSH + Linux 服务器,tmux 非常值得掌握。

核心概念

tmux 可以理解成三层:

text 复制代码
tmux Server
└── Session(会话)
    ├── Window(窗口)
    │   ├── Pane(窗格)
    │   └── Pane
    └── Window

例如:

text 复制代码
Session: work
├── Window 0: editor
│   ├── vim
│   └── shell
├── Window 1: server
│   └── ./server
└── Window 2: logs
    └── tail -f app.log

最常用的就是:

  • Session:一个完整的工作环境
  • Window:类似浏览器 Tab
  • Pane:一个窗口里面再切分终端

安装

Ubuntu / Debian

bash 复制代码
sudo apt install tmux

CentOS / RHEL

bash 复制代码
sudo yum install tmux

或者:

bash 复制代码
sudo dnf install tmux

macOS

bash 复制代码
brew install tmux

检查:

bash 复制代码
tmux -V

启动 tmux

直接:

bash 复制代码
tmux

或者给 Session 起名字:

bash 复制代码
tmux new -s work

推荐养成给 Session 命名的习惯。

例如:

bash 复制代码
tmux new -s server

进入后,你看到的仍然是普通 Shell。

tmux 快捷键的核心规则

tmux 默认快捷键前缀是:

text 复制代码
Ctrl-b

也就是先按:

text 复制代码
Ctrl-b

然后松开,再按第二个键。

例如:

text 复制代码
Ctrl-b c

表示:

  1. Ctrl-b
  2. 松开
  3. c

这是 tmux 最重要的使用规则。

最常用快捷键

Session

创建 Session

bash 复制代码
tmux new -s work

查看 Session

bash 复制代码
tmux ls

或者:

bash 复制代码
tmux list-sessions

进入已有 Session

bash 复制代码
tmux attach -t work

简写:

bash 复制代码
tmux a -t work

如果只有一个 Session:

bash 复制代码
tmux a

临时退出 Session

按:

text 复制代码
Ctrl-b d

这里的 ddetach

注意:

Ctrl-b d 不会关闭程序

例如:

bash 复制代码
tmux new -s work

# 启动程序
./server

# 按 Ctrl-b d

此时 SSH 可以断开,./server 仍然运行。

以后重新连接服务器:

bash 复制代码
tmux a -t work

就能回到原来的环境。

Window:创建多个终端

创建新 Window:

text 复制代码
Ctrl-b c

c = create。

查看 Window:

text 复制代码
Ctrl-b w

切换到下一个:

text 复制代码
Ctrl-b n

n = next。

切换到上一个:

text 复制代码
Ctrl-b p

p = previous。

直接跳到某个 Window:

text 复制代码
Ctrl-b 0
Ctrl-b 1
Ctrl-b 2

例如:

text 复制代码
Ctrl-b 2

进入第 2 个 Window。

Window 重命名

当前 Window 重命名:

text 复制代码
Ctrl-b ,

例如改成:

text 复制代码
server

推荐:

text 复制代码
Window 0: editor
Window 1: server
Window 2: logs

这样工作时非常清晰。

Pane:分屏

这是 tmux 最好用的功能之一。

上下分屏

text 复制代码
Ctrl-b "

得到:

text 复制代码
┌──────────────────┐
│                  │
├──────────────────┤
│                  │
└──────────────────┘

左右分屏

text 复制代码
Ctrl-b %

得到:

text 复制代码
┌─────────┬─────────┐
│         │         │
│         │         │
└─────────┴─────────┘

Pane 之间切换

最简单:

text 复制代码
Ctrl-b ↑
Ctrl-b ↓
Ctrl-b ←
Ctrl-b →

也可以使用:

text 复制代码
Ctrl-b o

循环切换 Pane。

调整 Pane 大小

可以按:

text 复制代码
Ctrl-b Ctrl-↑
Ctrl-b Ctrl-↓
Ctrl-b Ctrl-←
Ctrl-b Ctrl-→

调整当前 Pane 大小。

如果你的终端/键盘对这些组合支持不好,也可以直接使用 tmux 命令:

text 复制代码
Ctrl-b :

然后输入:

bash 复制代码
resize-pane -U 5

例如:

bash 复制代码
resize-pane -D 5
resize-pane -L 5
resize-pane -R 5

关闭 Window / Pane

关闭当前 Pane:

bash 复制代码
exit

或者:

text 复制代码
Ctrl-d

关闭当前 Window 的所有 Pane 后,Window 也会消失。

也可以使用:

text 复制代码
Ctrl-b &

关闭当前 Window。

关闭当前 Pane:

text 复制代码
Ctrl-b x

tmux 会询问:

text 复制代码
kill-pane? (y/n)

输入:

text 复制代码
y

一个非常实用的 SSH 工作流程

假设你有一台 Linux 服务器。

第一次登录:

bash 复制代码
ssh user@server

创建:

bash 复制代码
tmux new -s work

然后分成三个 Window。

Window 0:代码

text 复制代码
Ctrl-b c

运行:

bash 复制代码
vim .

Window 1:运行程序

text 复制代码
Ctrl-b c

运行:

bash 复制代码
./server

Window 2:查看日志

text 复制代码
Ctrl-b c

运行:

bash 复制代码
tail -f app.log

此时:

text 复制代码
work
├── 0: editor
├── 1: server
└── 2: logs

然后:

text 复制代码
Ctrl-b d

退出 tmux。

甚至可以直接关闭 SSH:

bash 复制代码
exit

第二天重新登录:

bash 复制代码
ssh user@server

然后:

bash 复制代码
tmux a -t work

之前的环境全部还在。

一个更舒服的布局

例如开发服务器时,可以这样:

text 复制代码
┌──────────────────────────────┐
│                              │
│            vim               │
│                              │
├────────────────┬─────────────┤
│                │             │
│    shell       │    logs     │
│                │             │
└────────────────┴─────────────┘

创建:

bash 复制代码
tmux new -s dev

然后:

text 复制代码
Ctrl-b %

左右分屏。

进入左边:

text 复制代码
Ctrl-b ←

再:

text 复制代码
Ctrl-b "

就可以得到类似:

text 复制代码
┌───────────────┬──────────────┐
│               │              │
│               │              │
│               │              │
├───────────────┤              │
│               │              │
│               │              │
└───────────────┴──────────────┘

查看所有 Session

bash 复制代码
tmux ls

例如:

text 复制代码
work: 3 windows
server: 2 windows
test: 1 windows

进入:

bash 复制代码
tmux a -t server

Session 之间切换

在 tmux 内:

text 复制代码
Ctrl-b s

会显示 Session 列表:

text 复制代码
0: work
1: server
2: test

选择即可。

也可以:

text 复制代码
Ctrl-b (

上一个 Session。

text 复制代码
Ctrl-b )

下一个 Session。

查看快捷键

忘记快捷键的时候:

text 复制代码
Ctrl-b ?

tmux 会显示完整快捷键列表。

这是非常重要的一个快捷键。

退出帮助:

text 复制代码
q

tmux 命令行

按:

text 复制代码
Ctrl-b :

进入 tmux command prompt。

例如:

text 复制代码
Ctrl-b :

然后:

bash 复制代码
new-window

或者:

bash 复制代码
split-window -h

其中:

text 复制代码
-h

表示水平分割(左右)。

text 复制代码
-v

表示垂直分割(上下)。

最值得记住的 15 个快捷键

如果你不想一次学太多,先记下面这些:

快捷键 功能
Ctrl-b d Detach,退出 Session
Ctrl-b c 创建 Window
Ctrl-b n 下一个 Window
Ctrl-b p 上一个 Window
Ctrl-b 0~9 切换 Window
Ctrl-b , 重命名 Window
Ctrl-b % 左右分屏
Ctrl-b " 上下分屏
Ctrl-b ↑↓←→ 切换 Pane
Ctrl-b o 下一个 Pane
Ctrl-b x 关闭 Pane
Ctrl-b & 关闭 Window
Ctrl-b w 查看 Window
Ctrl-b s 查看 Session
Ctrl-b ? 查看帮助

tmux 常用命令速查

创建 Session

bash 复制代码
tmux new -s name

查看 Session

bash 复制代码
tmux ls

连接 Session

bash 复制代码
tmux attach -t name

删除 Session

bash 复制代码
tmux kill-session -t name

删除所有 Session

bash 复制代码
tmux kill-server

⚠️ 这个会关闭当前 tmux server 下的所有 Session

tmux 的真正价值

如果只把 tmux 当成「分屏工具」,其实有点低估它了。

它最核心的价值是:

text 复制代码
SSH
 │
 ▼
tmux Session
 │
 ├── 程序
 ├── Shell
 ├── 日志
 └── 编辑器

SSH 连接只是"进入 tmux 的入口"。

即使:

text 复制代码
SSH 断开
     ↓
tmux Session 仍然存在
     ↓
程序继续运行
     ↓
重新 SSH
     ↓
tmux attach
     ↓
恢复现场

这也是为什么服务器开发、运维、跑长期任务时,tmux 非常常见。

建议你先练这套

不要试图一次记住所有命令,先实际执行:

bash 复制代码
tmux new -s demo

然后依次练:

text 复制代码
Ctrl-b c       # 新 Window
Ctrl-b c       # 再新一个
Ctrl-b 0       # 回到第一个
Ctrl-b %       # 左右分屏
Ctrl-b o       # 切换 Pane
Ctrl-b "       # 上下分屏
Ctrl-b d       # 离开

然后:

bash 复制代码
tmux ls
tmux a -t demo
相关推荐
cuncaojin4 天前
vim系列之Tmux
vim·tmux
Jurio.3 个月前
tmux 安装与使用教程:SSH 断开后任务继续运行,终端分屏与多窗口管理
linux·经验分享·ssh·tmux
NashSKY4 个月前
使用 tmux 让服务器训练任务在后台持续运行
服务器·tmux
palmer_kyle4 个月前
我的tmux日常使用
tmux
AlbertS4 个月前
常用终端工具的总结与对比
tmux·windterm·ghostty·terninal·zellij·srcurecrt
www.024 个月前
Linux 终端守护神 Tmux :如何优雅地管理后台实验与恢复会话
linux·运维·服务器·人工智能·tmux
殇者知忧5 个月前
Tmux快速上手
linux·tmux
缘友一世5 个月前
tmux 共享终端:AI 模型执行命令的实时审计方案
linux·llm·tmux·agent终端交互审计
feasibility.6 个月前
Mac终端的tmux会话使用Codex 时Ctrl+V 可能触发异常并导致会话假死问题以及解决方法
linux·运维·macos·tmux·codex