Tmux 终端复用器漫画入门指南
一、概述
1. 简介
A. 是什么
Tmux 是一个终端复用器(Terminal Multiplexer),它允许用户在单个终端窗口中创建、访问和控制多个终端会话。简单来说,它让你的终端工作变成网络游戏服务器,即使断网断电,你的程序依然在服务器后台运行。
B. 为什么学
- 解决 SSH 断线导致程序中断的问题
- 在一个终端窗口中实现多任务并行
- 为不同项目创建独立的工作空间
- 提升远程服务器工作效率
C. 学完能做什么
- 创建持久化的终端会话,断线重连不丢失工作
- 在单个终端中分屏显示多个工作区
- 管理多个独立的会话,每个会话对应一个项目
- 使用鼠标和键盘快捷键高效操作
2. 前置知识
A. 必备技能
- 基本命令行操作
- 了解 SSH 远程登录
B. 推荐知识
- Linux 系统基础
- Vim 或其他终端编辑器
二、环境准备
1. 系统要求
- Linux:Ubuntu、Debian、CentOS、Fedora 等
- macOS:10.15+
- Windows:通过 WSL 或 Cygwin
2. 安装步骤
Debian/Ubuntu:
sudo apt install tmuxCentOS/Fedora:
sudo dnf install tmuxmacOS:
brew install tmux3. 验证安装
tmux -V三、核心概念
1. 基本术语
- 会话(Session):Tmux 的最高级别容器,可以包含多个窗口
- 窗口(Window):会话中的标签页,类似浏览器的标签
- 面板(Pane):窗口分割后的子区域
- 前缀键(Prefix):触发 Tmux 快捷键的组合键,默认为 Ctrl+b
2. 工作原理
普通 SSH 就像看现场直播,断网就断了。Tmux 把你的工作变成网络游戏服务器,即使你断网了,你的角色依然在服务器后台运行。
graph LR
A[用户终端] -->|SSH 连接| B[远程服务器]
B -->|启动| C[Tmux Server]
C -->|包含| D[Session 1]
C -->|包含| E[Session 2]
D -->|包含| F[Window 1]
D -->|包含| G[Window 2]
F -->|分割| H[Pane 1]
F -->|分割| I[Pane 2]
style C fill:#e1f5ff
style D fill:#fff4e1
style E fill:#fff4e13. 核心机制
Tmux 的核心逻辑分为两个操作:
- Detach(离场):人走了,戏继续演
- Attach(返场):人回来,无缝接盘
sequenceDiagram
participant U as 用户
participant T as 终端
participant S as Tmux Server
participant P as 运行程序
U->>T: SSH 连接
U->>S: tmux attach
U->>P: 启动程序
P-->>U: 程序运行中
U->>S: Ctrl+b d (Detach)
U->>T: 断开 SSH
Note over S,P: 程序继续运行
U->>T: SSH 重连
U->>S: tmux attach
S-->>U: 恢复现场
P-->>U: 程序仍在运行四、快速上手
1. Hello World 示例
A. 第一次存档
在终端输入以下命令:
tmux屏幕闪了一下,底部多了一条绿色的状态栏。这意味着你已经进入了 Tmux 安全屋。
B. 测试持久化
运行一个长时间任务:
top现在模拟灾难——直接关闭终端窗口!
C. 时光回溯
重新打开终端,连上 SSH,输入复活咒语:
tmux attach奇迹发生了,那个 top 界面还在跳动,就像你从未离开过一样。
2. 核心功能演示
A. 会话管理
创建命名会话:
tmux new -s my_project查看所有会话:
tmux ls重新连接指定会话:
tmux attach -t my_project万能启动(有则进入,无则创建):
tmux new -A -s mainB. 窗口分屏
记住,所有快捷键都需要先按前缀键 Ctrl+b,松手后再按指令键。
左右分屏:
- 按 Ctrl+b,松手
- 按 %(Shift+5)
上下分屏:
- 按 Ctrl+b,松手
- 按 "(Shift+')
切换面板:
Ctrl+b 然后按方向键
全屏/还原:
Ctrl+b 然后按 z(Zoom)
C. 离场与返场
优雅离场:
Ctrl+b 然后按 d快速返场:
tmux attach五、进阶内容
1. 常用功能
A. 会话操作
| 操作 | 命令 |
|---|---|
| 创建命名会话 | tmux new -s <名称> |
| 查看会话列表 | tmux ls |
| 连接指定会话 | tmux attach -t <名称> |
| 杀死指定会话 | tmux kill-session -t <名称> |
B. 窗口操作
| 操作 | 快捷键 |
|---|---|
| 新建窗口 | Ctrl+b c |
| 切换窗口 | Ctrl+b 数字 |
| 重命名窗口 | Ctrl+b , |
| 关闭窗口 | Ctrl+b & |
C. 面板操作
| 操作 | 快捷键 |
|---|---|
| 垂直分割 | Ctrl+b % |
| 水平分割 | Ctrl+b " |
| 切换面板 | Ctrl+b 方向键 |
| 关闭面板 | Ctrl+b x |
2. 最佳实践
A. 配置文件
开启鼠标支持(强烈推荐):
编辑 ~/.tmux.conf,添加:
set -g mouse on重新加载配置:
tmux source ~/.tmux.confB. 工作流程
推荐的工作流程:
- 登录服务器
- 输入 tmux new -A -s main
- 开始干活
- 要下班了?直接关窗口或 Ctrl+b d 优雅离场
- 回家路上想看一眼?SSH 连上去,tmux attach,还是那个现场
C. 会话命名规范
为不同项目创建独立会话:
# 公司项目
tmux new -s work_project
# 个人学习
tmux new -s study
# 摸鱼脚本
tmux new -s scripts六、实战案例
1. 场景描述
你在远程服务器上训练一个机器学习模型,预计需要 6 小时。你担心网络不稳定导致训练中断。
2. 实现步骤
创建专用会话:
tmux new -s model_training启动训练:
python train_model.py检查任务运行后,优雅离场:
Ctrl+b d现在你可以安全地关闭电脑下班回家。回家后重新连接:
ssh user@server
tmux attach -t model_training你的模型训练还在继续,进度一切正常。
3. 多项目管理
你同时在做三个项目:公司业务、个人博客、学习笔记。
创建三个独立会话:
tmux new -s work
tmux new -s blog
tmux new -s study每个会话都有自己的窗口布局和运行程序,互不干扰。
切换工作场景:
tmux attach -t work # 上班模式
tmux attach -t blog # 创作模式
tmux attach -t study # 学习模式七、常见问题
1. 安装问题
Q:apt 找不到 tmux 包?
A:更新软件源 sudo apt update
Q:macOS 提示 command not found?
A:先安装 Homebrew,然后 brew install tmux
2. 配置问题
Q:鼠标滚轮不工作?
A:在 ~/.tmux.conf 中添加 set -g mouse on,然后重新加载配置
Q:快捷键不生效?
A:确保先按 Ctrl+b,松开后再按指令键
3. 运行问题
Q:无法连接到已有会话?
A:使用 tmux ls 查看会话名称,然后用 tmux attach -t <名称>
Q:会话无法关闭?
A:使用 tmux kill-session -t <名称> 强制关闭
八、快捷速查表
核心法则
所有快捷键必须先按 Ctrl+b,松手,再按指令。
会话管理(Session)
- 新建并命名:tmux new -s <名字>
- 查看列表:tmux ls
- 回家(Attach):tmux a -t <名字>
- 万能启动:tmux new -A -s main
空间切割(Pane)
- 左右分:%
- 上下分:"
- 切换焦点:方向键
- 全屏/还原:z(Zoom)
离场(Detach)
- 挂机离开:d
鼠标支持
在 ~/.tmux.conf 中写入:
set -g mouse on然后在 Tmux 内输入 Ctrl+b : source ~/.tmux.conf 生效。