如何使用 tmux 終端機復用器:安裝、工作階段、視窗、面板與分離附著

安裝 tmux,用工作階段、視窗和面板管理終端機任務,分離後行程繼續,隨時 attach 回來。

SSH 进服务器跑长任务、本地开多个终端标签,断线或关視窗就会丢进程。tmux 是终端复用器:在一个 SSH 连接里开多个視窗和面板,分離后进程继续跑,随时再附著回来。

搜索 tmux 安裝 工作階段 視窗 面板 分離 附著 的人,通常要的是:装好、建工作階段、分屏、记住分離/附著,以及一份能用的基础設定。下面按官方手册 man tmux 与 tmux wiki 写可核对步骤。

安裝 tmux 新建工作階段与分屏 分離 / 再附著

tmux 解决什么问题

01

工作階段在后台继续跑

按 Ctrl+b 再按 d 分離(detach),编译、日志 tail、数据库迁移不会随 SSH 断开而停。

02

視窗 + 面板,一屏多任务

一个工作階段里多个視窗(window)像标签页;每个視窗再拆成左右/上下面板(pane),对照日志与 shell 不用切标签。

03

可脚本化、可持久命名

tmux new -s deploy 给工作階段起名;tmux ls 列出;tmux attach -t deploy 回到现场。团队共用 jump host 时常用。

在 macOS 与 Linux 安裝

  1. 1

    macOS:Homebrew

    运行 brew install tmux,确认 tmux -V 有版本号。Apple Silicon 与 Intel 包名相同;若需真彩色,tmux 3.0+ 已内置,旧版需查发行版说明。

  2. 2

    Debian / Ubuntu

    sudo apt update && sudo apt install tmux。LTS 仓库版本略旧但够用;要最新特性可从源码或第三方 PPA 安裝,以当前发行版文档为准。

  3. 3

    Fedora / Arch 等

    Fedora:sudo dnf install tmux。Arch:sudo pacman -S tmux。装完直接输入 tmux 会进入带状态栏的新工作階段。

  4. 4

    第一次进入与退出

    裸跑 tmux 会创建编号工作階段。退出整个工作階段:在 shell 里 exit 直到面板关完,或 tmux kill-session。仅暂时离开用 detach(见下文),不要直接关 SSH。

工作階段:新建、列出、附著

tmux 层级是 server → session → window → pane。常用命令在 tmux 外也能跑:

# 新建命名工作階段
tmux new -s dev

# 列出工作階段
tmux ls

# 附著到已有工作階段
tmux attach -t dev
# 简写
tmux a -t dev

# 在工作階段内分離(进程继续)
# 按键:Ctrl+b 然后 d

已有工作階段时 tmux new -s foo 会报错;改用 tmux new -s foo -A(3.2+)存在则 attach,或先 tmux has-session -t foo 2>/dev/null || tmux new -s foo。

視窗与面板:默认前缀 Ctrl+b

tmux 先按前缀键(默认 Ctrl+b),再按命令键。下面「前缀」均指 Ctrl+b。

按键(前缀后) 作用 场景
c 新建視窗 开一条新 shell 线
n / p 下一 / 上一視窗 在視窗间切换
0–9 跳到编号視窗 状态栏左侧编号
% 左右分屏 日志 + 命令行对照
" 上下分屏 监控 + 编辑
方向键 在面板间移动焦点 多面板协作
x 关闭当前面板 确认提示 y/n
d 分離工作階段 SSH 断开前必做
? 列出所有快捷键 忘记按键时

基础設定 ~/.tmux.conf

在用户目录创建 ~/.tmux.conf,保存后执行 tmux source-file ~/.tmux.conf 或重开 tmux 生效:

# 把前缀改成 Ctrl+a(与 GNU screen 类似,可选)
# unbind C-b
# set -g prefix C-a
# bind C-a send-prefix

# 鼠标滚轮与点击切换面板(tmux 2.1+)
set -g mouse on

# 历史行数,方便 scrollback 查日志
set -g history-limit 50000

# 視窗/面板从 1 开始编号(可选)
set -g base-index 1
setw -g pane-base-index 1

# 256 色 / truecolor(终端需支持)
set -g default-terminal "tmux-256color"

改前缀后,下文所有「前缀 + 键」都要换成新前缀。官方选项说明见 man tmux 的 OPTIONS 段。

tmux 不是 shell 替代品,而是终端里的「工作階段管理器」。shell 仍是 bash/zsh/fish;tmux 管視窗生命周期与断线恢复。

attach 报 no sessions
工作階段已被 kill 或 tmux server 重启。用 tmux ls 确认;需要持久任务请配合 systemd、cron 或 detach 而非杀工作階段。
颜色/字体乱码
检查 TERM、default-terminal 与 SSH 远端 locale。本地终端与远端 tmux 都需支持 UTF-8。
与 tmux 内 vim/nvim 冲突
前缀与 vim 快捷键可能重叠。可设 setw -g mode-keys vi 并在 vim 里用 :set termguicolors,或使用 vim-tmux-navigator 等插件(按各自文档設定)。

远程结对时,终端里对齐命令行很快;若要共享白板或语音,可从 wbroom 首页 开浏览器房间,步骤见 建立與加入房間。

还想核对的问题

tmux 和 screen 有什么区别?

两者都是终端复用器。tmux 視窗/面板模型更现代、脚本接口更一致(tmux list-windows 等),新教程多指向 tmux;老系统若只带 screen 仍可用 screen -S / screen -r 完成类似 detach/attach。

能否开机自动建工作階段?

可以。用 systemd user unit、.bashrc 里 tmux attach -t main || tmux new -s main,或部署工具里的 tmux 配方。注意别把多个 SSH 都 attach 到同一工作階段造成输入冲突。

多个用户能共享一个 tmux 工作階段吗?

同一 Unix 用户下可以多人 attach 同一 session(例如共用 deploy 用户)。不同用户需相同权限与 socket 路径;生产环境更常见的是各开各工作階段,用共享终端记录或配对工具协作。

如何彻底结束 tmux?

工作階段内 exit 所有 pane 会关視窗;最后一个視窗关闭会结束 session。或 tmux kill-session -t 名称。要停整个 tmux server:tmux kill-server(会结束所有工作階段)。

開始一場會議