你有没有过:在远程服务器上跑一个要几小时的训练任务,结果笔记本合盖、网络一断,SSH 断开,任务跟着没了。或者想一边看日志一边敲命令,却只有一个终端窗口。tmux 就是来解决这两个痛点的——它让终端”脱离窗口独立存活”,并能在一个屏幕里分屏。这一篇带你上手。
把 tmux 想成”终端的虚拟桌面管理器”:你开的每个任务住在一个独立房间(会话)里,关掉看得见的门(断开连接)房间还在跑;你还能把一个房间切成几个小窗同时看。
核心概念:三层结构
- 会话(Session):一个独立的工作空间,里面可以跑一组任务。断开 SSH 后会话仍在后台。
- 窗口(Window):会话里的一个”标签页”,一个会话可有多个窗口。
- 窗格(Pane):把一个窗口竖着或横着切成几块,同时显示多个终端。
记住”会话 > 窗口 > 窗格”这个包含关系,就不乱了。
安装与启动
# macOS
brew install tmux
# Ubuntu / Debian
sudo apt install tmux
# 启动一个新会话
tmux
# 或起个名字方便识别
tmux new -s work
进去后界面和平时终端差不多,只是底部多了状态栏(显示会话名、窗口等)。
前缀键:所有命令的开关
tmux 的命令都要先按 前缀键 Ctrl+B,松开再按功能键。比如新建窗口:
Ctrl+B 然后按 C # 新建窗口(create)
Ctrl+B 然后按 N # 下一个窗口
Ctrl+B 然后按 P # 上一个窗口
Ctrl+B 然后按 数字 # 跳到第几个窗口
第一次用会觉得别扭,练几次就成肌肉记忆。前缀键也能改成 Ctrl+A(很多人这么干)。
分屏:一个屏幕看多个终端
Ctrl+B 然后按 % # 左右分屏(竖着切)
Ctrl+B 然后按 " # 上下分屏(横着切)
Ctrl+B 然后按 方向键 # 在窗格间移动焦点
Ctrl+B 然后按 Z # 当前窗格放大/还原(专注单个任务)
分屏后,左边跑服务、右边看日志、下边进数据库,一目了然,不用切来切去。
分离与重连:tmux 的精华
这是最实用的能力——让任务在后台持续跑:
# 在 tmux 里,分离(detach),任务继续跑,你回到普通终端
Ctrl+B 然后按 D
# 断开 SSH 也没事,重新连上服务器后:
tmux ls # 看有哪些会话
tmux attach -t work # 重新连回名为 work 的会话
场景:在服务器 tmux new -s train 里启动训练,然后 Ctrl+B D 分离、关电脑走人。几小时后回来,ssh 连上、tmux attach 一看,任务还在跑、日志都在。
常用速查
Ctrl+B D 分离会话
tmux ls 列出会话
tmux attach -t 重连会话
Ctrl+B % 左右分屏
Ctrl+B " 上下分屏
Ctrl+B 方向键 切换窗格
Ctrl+B Z 放大当前窗格
Ctrl+B ? 查看所有快捷键帮助
常见新手坑
- 忘了前缀键:直接按 C 新建不了窗口,得先
Ctrl+B松开再按。 - 任务直接在前台跑没用 tmux:网络一断任务没了,长任务务必放进 tmux 会话。
- 分屏后找不到焦点在哪:看窗格边框高亮,或用
Ctrl+B 方向键移动。 - 不知道怎么退出:想彻底关掉,先退出窗格里所有程序,再
exit关窗格;会话用tmux kill-session -t 名结束。
小测验
- 问题1:tmux 三层结构从大到小?答案:会话(Session)> 窗口(Window)> 窗格(Pane)。
- 问题2:怎么让服务器上的长任务在断开 SSH 后继续跑?答案:在 tmux 会话里启动,
Ctrl+B D分离,重连后tmux attach回来。 - 问题3:tmux 所有命令的前缀键默认是什么?答案:
Ctrl+B(可改Ctrl+A)。
更多实战:远程跑训练任务
你在云服务器上训练模型,要几小时。步骤:
ssh user@server
tmux new -s train # 开会话
python train.py # 启动训练(日志开始刷)
# 按 Ctrl+B 然后 D 分离,关电脑走人
几小时后回来:
ssh user@server
tmux attach -t train # 重连,看到训练还在跑、日志都在
如果网络中途断了,训练不受影响——因为它活在 tmux 会话里,不依赖你的 SSH 连接。
分屏监控
想在左边看训练日志、右边随时敲命令:
Ctrl+B % 左边日志,右边命令行
Ctrl+B 方向键 切换焦点
Ctrl+B Z 想专注看日志时放大左边,再按一次还原
自测:你真的懂了吗
- tmux 三层结构从大到小?答案:会话 > 窗口 > 窗格。
- 怎么让服务器长任务断开 SSH 后继续跑?答案:tmux 会话里启动,Ctrl+B D 分离,重连后 attach。
- tmux 所有命令默认前缀键?答案:Ctrl+B(可改 Ctrl+A)。
常见认知误区
tmux 这块,新手最容易被”前缀键”劝退。第一,直接按功能键没反应——忘了先按 Ctrl + B 松开再按,这是 tmux 所有命令的开关,练几次就成肌肉记忆。第二,长任务直接在前台跑没用 tmux——网络一断任务没了,长任务务必放进 tmux 会话再跑。第三,分屏后找不到焦点在哪——看窗格边框高亮,或用 Ctrl + B 加方向键移动。第四,不知道怎么退出——想彻底关掉,先退出窗格里所有程序再 exit 关窗格,会话用 tmux kill-session -t 名 结束。第五,觉得 tmux 只适合远程——其实本地开发分屏看日志、跑服务也很爽,不限于服务器。第六,前缀键非得是 Ctrl + B——很多人改成更顺手的 Ctrl + A,配置文件里一行就能改。tmux 的价值在”任务脱离窗口独立存活”,远程开发和长任务场景一旦用过就回不去。
这一篇你该记住的
- tmux 让终端脱离窗口独立存活,并支持分屏,适合远程和长任务。
- 三层:会话 > 窗口 > 窗格。
- 前缀键
Ctrl+B,再按功能键(C 新建窗口、% 左右分、” 上下分)。 - 分离
Ctrl+B D、重连tmux attach -t 名,长任务不断。 - 远程开发、训练任务、多任务同屏都靠它。
下一篇我们讲 笔记与代码片段工具:怎么把零散的知识和常用代码攒成自己的第二大脑。