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 tmux

CentOS/Fedora:

sudo dnf install tmux

macOS:

brew install tmux

3. 验证安装

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:#fff4e1

Tmux 工作原理

3. 核心机制

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: 程序仍在运行

Tmux 会话机制

四、快速上手

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 main

B. 窗口分屏

记住,所有快捷键都需要先按前缀键 Ctrl+b,松手后再按指令键。

左右分屏

  1. 按 Ctrl+b,松手
  2. 按 %(Shift+5)

上下分屏

  1. 按 Ctrl+b,松手
  2. 按 "(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.conf

B. 工作流程

推荐的工作流程:

  1. 登录服务器
  2. 输入 tmux new -A -s main
  3. 开始干活
  4. 要下班了?直接关窗口或 Ctrl+b d 优雅离场
  5. 回家路上想看一眼?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 生效。


参考资料

  1. 再见,断线!—— 用漫画学 Tmux:打造你永不掉线的时光屋
最后修改:2026 年 01 月 19 日
如果觉得我的文章对你有用,请随意赞赏