教程
🛠️

开发工具

Git、VS Code、终端与效率工具使用指南。

tmux 终端复用:关掉窗口程序也不中断

搞懂 tmux 的会话/窗口/窗格模型,掌握分离与重连、分屏布局,以及远程开发时让任务持续运行的用法。

· 更新于 2026-07-20 阅读量 --

你有没有过:在远程服务器上跑一个要几小时的训练任务,结果笔记本合盖、网络一断,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 名,长任务不断。
  • 远程开发、训练任务、多任务同屏都靠它。

下一篇我们讲 笔记与代码片段工具:怎么把零散的知识和常用代码攒成自己的第二大脑。