整体说明
- tmux(Terminal Multiplexer 的缩写)是 Linux/Unix 系统的一款优秀的终端复用工具 (一般 Linux 系统默认自带,无需封装),也是 GNU Screen 的升级版,功能更强大、设计更优雅
- tmux 的核心作用包括:
- 1)借助 tmux,在远程连接服务器时,即使 断开 SSH 连接、终端关闭、网络中断 ,tmux 里运行的程序也不会停止,重新连接后可无缝恢复会话继续操作
- 2)一个终端窗口中,创建 多个会话、多个窗口、多个分屏面板 ,无需开多个终端窗口,高效管理多个任务
- 3)支持会话分离/接入、窗口切换、面板缩放、快捷键操作等,是后端开发/运维必备工具
安装 tmux
几乎所有 Linux 发行版都能通过包管理器一键安装,系统默认一般不带,执行对应命令即可
CentOS / RHEL / Fedora (yum/dnf)
1
2yum install -y tmux # CentOS7
dnf install -y tmux # CentOS8+/FedoraUbuntu / Debian / Deepin (apt)
1
apt update && apt install -y tmux
MacOS (brew)
1
brew install tmux
安装完成后,终端输入
tmux -V验证版本,显示版本号即安装成功
tmux 核心概念
- tmux 的结构是 会话 > 窗口 > 面板 三层嵌套,从大到小 包含关系
会话 (Session)
- 最顶层的独立运行环境,一个 tmux 可以创建多个相互独立的会话
- 每个会话有唯一的「会话名」或「会话ID」,可以随时分离(detach) 或接入(attach)
- 分离会话:会话在后台继续运行,当前终端退出 tmux 界面
- 接入会话:重新进入之前分离的会话,恢复所有操作界面,程序正常运行
窗口 (Window)
- 一个会话里可以创建多个 窗口 ,默认占满整个屏幕,窗口之间可以快速切换
- 类似浏览器的 标签页,比如:一个窗口跑项目日志、一个窗口执行代码部署、一个窗口做文件编辑
面板 (Pane)
- 一个窗口里可以分割成多个 面板(分屏),所有面板在同一个窗口中显示,共享当前会话环境
- 类似终端的「分屏功能」,比如:左边面板编辑代码、右边面板实时运行程序,上下面板分别查看日志和执行命令
tmux 通用操作规则
- tmux 所有的功能操作,都依赖 前缀键+ 功能键 的组合方式,这是 tmux 的核心操作逻辑:
前缀键 (Prefix Key)
- 默认的前缀键是:
Ctrl + b(先按住Ctrl和b一起松开,再按后面的功能键)
tmux 命令两种执行方式
- 快捷键方式 :
前缀键 + 功能键,效率最高,日常使用99%的场景都用这个; - 命令行方式 :在 tmux 终端中输入
tmux 命令参数,适合会话管理(创建/接入/删除)等场景
基础核心操作
会话是 tmux 最核心的功能,所有操作都围绕会话展开,以下命令全部在系统原生终端执行(未进入 tmux 时)
创建新会话
1
2tmux # 创建无名称会话,默认会话ID从0开始
tmux new -s 会话名 # 推荐!创建指定名称的会话,比如 tmux new -s project分离当前会话(核心!不会停止程序)
- 方式一:进入 tmux 会话后,执行快捷键:
Ctrl+b d(放开 CTRL+b 后再按 d) - 方式二:在 tmux 终端输入
tmux detach - 方式三:在其他外部终端输入
tmux detach -t 会话名/会话ID - 方式四:直接关闭窗口(SSH 或 网页窗口),不建议这种方式,可能存在问题?
- 注:以上四种方式下,当前终端退出 tmux 界面,回到系统原生终端,tmux 会话在后台继续运行 ,里面的程序不会停止
- 方式一:进入 tmux 会话后,执行快捷键:
彻底关闭当前会话:
1
2exit # 简单命令
tmux kill-session # 明确关闭当前 session查看所有后台会话
1
tmux ls # 列出所有会话,格式:会话名: 窗口数 (创建时间) [终端大小]
接入/恢复指定会话(核心)
1
2tmux a # 简写,接入最近的一个会话
tmux a -t 会话名/会话ID # 推荐!精准接入指定会话,比如 tmux a -t project关闭/杀死指定会话
1
2tmux kill-session -t 会话名/会话ID # 比如 tmux kill-session -t project
tmux kill-server # 慎用!杀死所有 tmux 会话,停止 tmux 服务重命名当前会话
- 进入 tmux 会话后,快捷键:
Ctrl+b $,然后输入新的会话名即可
- 进入 tmux 会话后,快捷键:
窗口管理(待测试)
- 窗口 = tmux 的 标签页,一个会话可以创建多个窗口,所有操作均在 tmux 会话内执行(快捷键为主)
- 核心快捷键(均需先按
Ctrl+b松开,再按对应键):- 1)
c→ 创建一个新的窗口(默认名称为当前路径) - 2)
w→ 弹出窗口列表,按上下键选择,回车切换 - 3)
n→ 切换到下一个窗口(按创建顺序) - 4)
p→ 切换到上一个窗口(按创建顺序) - 5)
数字键 0~9→ 快速切换到指定序号的窗口(窗口默认从0开始编号) - 6)
,→ 重命名当前窗口(比如给窗口命名为 log、deploy、edit) - 7)
&→ 关闭当前窗口(会有确认提示,按 y 确认)
- 1)
- 注:这里有个 小技巧,tmux 底部状态栏会显示当前会话的所有窗口,
*标记的是当前激活的窗口
面板管理(待测试)
- 面板 = tmux 的 分屏,一个窗口可以分割成多个面板,所有操作均在 tmux 会话内执行 ,这是 tmux 提升效率的核心功能
- 核心快捷键(均需先按
Ctrl+b松开,再按对应键): - 面板分割(创建面板)
%:垂直分割 ,将当前面板分成左右两个面板(最常用)":水平分割 ,将当前面板分成上下两个面板
- 面板切换(重点)
方向键 ↑ ↓ ← →,切换到对应方向的面板(最直观,推荐)o,按顺序循环切换所有面板;, 切换到上一次操作的面板
- 面板调整/操作
Ctrl + 方向键, 调整当前面板的边框大小(按住 Ctrl+b 不放,再按方向键,持续调整)x, 关闭当前面板(光标所在面板,会有确认提示,按 y 确认)z, 面板最大化/还原 :当前面板占满整个窗口,再按一次恢复原大小(看日志/长代码必备)!, 将当前面板独立成新窗口 :适合需要单独放大某个面板的场景