
注: 本文为安丫科技刘峰的原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
做运维和开发的兄弟们,有没有经历过这种“崩溃时刻”?
你连着远程服务器,跑着一个需要几小时才能跑完的数据迁移脚本。
眼看进度条到了 99%,突然——网络闪断了!
或者你的笔记本不小心合盖休眠了!
再连上去一看,SSH 断开,进程被杀,所有进度清零...
那一刻,是不是想砸电脑?🤬
别慌,今天就给大家安利一个Linux 终端神器——tmux。
它不仅能让你的任务“永不断线”,还能让你像黑客电影里一样,在一个屏幕里同时监控 CPU、看日志、敲代码。
花 5 分钟看完这篇,彻底告别断线焦虑,让你的终端操作效率起飞!
01
为什么你需要 tmux?——三大
核心痛点
在直接学习命令之前,我们先理解 tmux 解决了哪些关键问题。
会话保持 (Session Persistence)
痛点
当你通过 SSH 连接到远程服务器并执行一个需要数小时的脚本时,如果你的本地网络中断、笔记本合盖休眠或 SSH 连接超时,服务器上的那个任务会因为 SIGHUP 信号而被终止。
所有未保存的工作和运行中的进程都会丢失。
tmux 解决方案
tmux 在服务器上创建一个独立的会话(Session),你的所有操作都在这个会话中进行。
tmux 会话与你的 SSH 连接是分离的。
即使 SSH 断开,tmux 会话及其中的所有进程依然会在服务器后台持续运行。
你可以随时重新连接服务器,并“附加”(attach)回之前的会d话,一切都将恢复原样。
窗口管理 (Window Management)
痛点
当需要同时查看日志、编辑代码、执行命令时,你可能需要打开多个 SSH 连接窗口,并在它们之间频繁切换,非常繁琐。
tmux 解决方案
在一个 tmux 会话中,你可以创建多个“窗口”(Window),就像浏览器的标签页一样。
每个窗口都是一个独立的 shell 环境,你可以在窗口之间快速切换,极大地简化了多任务管理。
窗格分割 (Pane Splitting)
痛点
有时,你希望在一个屏幕内同时看到多个命令的输出,例如一边 tail -f 监控日志,另一边执行测试命令。
tmux 解决方案
tmux 允许你将一个窗口(Window)垂直或水平分割成多个“窗格”(Pane)。
每个窗格都是一个独立的终端,你可以在同一个屏幕上布局和操作多个 shell,实现真正意义上的“分屏工作”。
02
核心概念:三层结构
要掌握 tmux,必须理解其三层结构:Session -> Window -> Pane。
Session (会话)
最高层级。
一个 tmux 服务器可以管理多个会话。
每个会话都是一个独立的工作区,包含一组窗口。
你可以为会话命名,以便区分不同的项目或任务(例如,一个会话用于 Web 开发,另一个用于数据库管理)。
Window (窗口)
会话的组成部分,类似于浏览器标签页。
一个会话可以有多个窗口。
默认情况下,你一次只能看到一个窗口。
Pane (窗格)
窗口的组成部分,是最小的终端单元。
一个窗口可以被分割成多个窗格,让你可以在一个屏幕内同时看到多个终端。
03
安装与启动
在大多数 Linux 发行版中,tmux 的安装都非常简单。
在 Ubuntu/Debian 上
sudo apt-get update
sudo apt-get install tmux
在 CentOS/RHEL/Fedora 上
sudo yum install tmux
# 或者
sudo dnf install tmux
安装后,直接在终端输入 tmux 即可启动一个默认的 tmux 会话。
04
基本操作:命令前缀是关键
tmux 的所有快捷键都需要先按下一个命令前缀 (Prefix),然后再按功能键。tmux 的默认前缀是 Ctrl + b。
记忆技巧
按下 Ctrl + b 后,松开这两个键,然后再按下一个功能键。
会话管理 (Session)
启动新会话
# 启动一个默认会话
tmux
# 启动一个命名会话(推荐!)
tmux new -s my_session_name
查看所有会话
tmux ls
示例
0: 3 windows (created Sun Mar 1 20:51:57 2026) (attached)
my_session_name: 1 windows (created Sun Mar 1 21:02:04 2026) (attached)
分离会话 (Detach)
当你需要暂时离开 tmux 会话,但保持其在后台运行时,执行此操作。
快捷键:Ctrl + b 然后 d
Ctrl + d
[detached (from session my_session_name)]
附加会话 (Attach)
重新连接到之前分离的会话。
# 附加到最近一个会话
tmux attach
# 简写
tmux a
# 附加到指定名称的会话
tmux attach -t my_session_name
# 简写
tmux a -t my_session_name
杀死会话
# 杀死指定名称的会话
tmux kill-session -t my_session_name
窗口管理 (Window)
创建新窗口
快捷键
Ctrl + b 然后 c
切换窗口
Ctrl+b 然后 w
弹出窗口列表(最直观)
Ctrl + b 然后 p (Previous)
切换到上一个窗口。
Ctrl + b 然后 n (Next)
切换到下一个窗口。
Ctrl + b 然后 [窗口编号] (如 0, 1, 2...)
直接跳转到指定编号的窗口。

重命名当前窗口
快捷键
Ctrl + b 然后 ,
关闭当前窗口
快捷键
Ctrl + b 然后 & (会提示确认)

窗格管理 (Pane)
垂直分割
快捷键
Ctrl + b 然后 %

水平分割
快捷键
Ctrl + b 然后 "

在窗格间切换
快捷键
Ctrl + b 然后 [方向键] (上/下/左/右)
调整窗格大小
快捷键
按住 Ctrl + b 不松开,同时按 [方向键]
关闭当前窗格
快捷键
Ctrl + b 然后 x (会提示确认)
或者直接在窗格中输入 exit 命令。

最大化/还原当前窗格 (临时全屏)
快捷键
Ctrl + b 然后 z (Zoom)
05
高级技巧与个性化配置
复制模式 (Copy Mode)
tmux 允许你像在 vim 中一样,回滚、浏览和复制终端的历史输出。
进入复制模式
现代数据库的 SGA 通常以数十甚至数百 GB 计。
共享(Shared)
使用方向键、PageUp/PageDown 自由滚动。
开始选择 (vi 模式下)
按下 Space (空格键)。
移动光标选择文本
复制 (vi 模式下)
按下 Enter。
粘贴
Ctrl + b 然后 ]
个性化配置 (~/.tmux.conf)
tmux 的所有行为都可以通过一个名为 ~/.tmux.conf 的配置文件进行定制。
以下是一些非常流行且实用的配置,你可以将它们添加到你的 ~/.tmux.conf 文件中:
# 将前缀从 C-b 改为 C-a,更顺手
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# 开启鼠标支持(滚动、选择窗格/窗口)
set -g mouse on
# 使用 | 和 - 进行分割,更直观
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
# 使用 vim 风格的快捷键在窗格间切换
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 重新加载配置文件,无需重启 tmux
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# 设置窗口和窗格的起始编号为 1,而不是 0
set -g base-index 1
setw -g pane-base-index 1
应用配置
修改完 ~/.tmux.comf 后,可以在 tmux 会话中按 Ctrl + b 然后 r (根据上面的配置) 来重新加载,或者杀死所有 tmux 会话后重启。
06
实战工作流示例:执行
PostgreSQL 数据库全量备份
假设你是一名数据库管理员(DBA),需要在夜间对一个大型的 PostgreSQL 生产数据库(名为 prod_db)进行一次逻辑全量备份。
这个任务耗时较长,并且在备份期间,你需要同时监控服务器的资源使用情况和备份进度。
使用 tmux,你可以构建一个安全、高效、可监控的工作环境。
场景描述
任务
使用 pg_dump 对 prod_db 数据库进行全量备份。
挑战
a. 备份过程可能持续数小时,不能因本地网络中断而失败。
b. 需要实时监控服务器的磁盘 I/O 和 CPU 负载,确保备份不会过度影响其他业务。
c. 希望在备份文件的同时,能看到 pg_dump 输出的详细日志。
d. 备份完成后,需要对备份文件进行压缩。
使用 tmux 的工作流
1)连接服务器并启动命名会话
首先,通过 SSH 连接到你的 PostgreSQL 数据库服务器。
然后,启动一个有意义的命名会话,以便将来重连。
# 启动一个名为 "pg_backup" 的 tmux 会话
tmux new -s pg_backup
2)准备工作环境(窗口 1)
默认创建的第一个窗口(编号为 1)将是我们的主操作窗口。
重命名窗口
按 Ctrl + b 然后 ,,将窗口名称修改为 Backup-Ops,回车。
编写备份命令
在这个窗口中,你可以从容地编写和检查你的 pg_dump 命令,不用担心误操作
# 示例 pg_dump 命令
pg_dump -U postgres -h localhost -p 5432 -F c -v -f backup/prod_db_$(date +%Y%m%d).dump prod_db
-F c
使用自定义格式,方便后续使用 pg_restore 进行灵活恢复。
-v
(Verbose) 输出详细的进度信息。
-f
指定输出文件。
3)创建监控窗口并分割窗格(窗口 2)
在开始备份之前,先建立好我们的“监控驾驶舱”。
创建新窗口
按 Ctrl + b 然后 c,创建一个新窗口。
重命名窗口
按 Ctrl + b 然后 ,,将窗口名称修改为 Monitoring。
垂直分割窗格
按 Ctrl + b 然后 %,将屏幕左右分割。
在左侧窗格监控 I/O
光标默认在右侧窗格,按 Ctrl + b 然后 ← (左方向键) 切换到左侧窗格。
执行 iostat 命令来监控磁盘 I/O。
# 每 5 秒刷新一次磁盘 I/O 状态
iostat -x 5
在右侧窗格监控 CPU 和进程
按 Ctrl + b 然后 → (右方向键) 切换回右侧窗格。
执行 htop 或 top 命令来监控 CPU、内存使用情况以及活跃进程。
htop
现在,你有了一个可以实时观察系统负载的监控界面。
开始备份并分离会话
一切准备就绪,现在可以安全地开始备份了。
切换回主操作窗口
按 Ctrl + b 然后 p (Previous) 切换回 Backup-Ops 窗口。
执行备份命令
在提示符后,执行你在第 2 步中准备好的 pg_dump 命令。
你会看到 pg_dump 的详细日志开始在屏幕上滚动。
安全分离会话
确认备份已经开始后,按下 Ctrl + b 然后 d。
你将看到 [detached (from session pg_backup)] 的提示,然后返回到你原始的 shell。
此时,你的 SSH 连接可以安全断开,笔记本可以合盖,甚至可以关机回家。
pg_backup 会话以及其中的 pg_dump 进程和监控命令,都在服务器后台安然无恙地运行着。
随时重连并检查进度
几个小时后,或者在第二天早上,你可以重新连接到服务器。
查看会话
tmux ls
你会看到 pg_backup 会话依然存在。
附加会话
tmux attach -t pg_backup
你将瞬间回到之前的工作环境:
在 Backup-Ops 窗口,你可以看到 pg_dump 是否已经执行完毕。
切换到 Monitoring 窗口 (Ctrl + b, n),你可以通过 iostat 和 htop 的历史输出来回顾整个备份期间服务器的资源负载情况。
后续操作:压缩与清理
确认备份成功后,你可以在 Backup-Ops 窗口中继续执行后续操作。
压缩备份文件
gzip backup/prod_db_20260227.dump
完成工作,关闭会话
当所有任务都完成后,你可以在每个窗格和窗口中输入 exit 来逐一关闭它们。
当最后一个窗口关闭时,tmux 会话也会自动结束。
或者,你可以直接杀死整个会话:
tmux kill-session -t pg_backup
通过这个工作流,tmux 为长时间的数据库备份任务提供了一个安全、可监控、可恢复的执行环境,完美解决了远程操作的核心痛点。
这正是 tmux 对于 DBA 和系统管理员的价值所在。
写在最后
工具是为了人服务的。
tmux 看似命令繁多,但一旦你习惯了它的“会话保持”和“分屏操作”,你会发现自己再也回不去那个“开一堆 SSH 窗口”的原始时代了。
这就好比给你的服务器装了一个“时光胶囊”:不管你离开多久,回来时,它依然保持着你离开时的模样,默默地为你守候着任务进度。
希望这篇干货能帮你解决远程办公的后顾之忧。
如果你也有好用的 Linux 神器推荐,欢迎在评论区留言分享!
觉得有用,别忘了【点赞】+【在看】,转发给身边那个经常“断网重跑”的倒霉蛋吧! 😉
关注【安呀智数据坊】,每天一点硬核干货,带你从“人肉运维”进阶为“效率大神”。

作者介绍
大家好,我是刘峰,安丫科技创始人 & 数据库技术高级讲师,专注于 PostgreSQL、国产数据库运维与迁移、数据库性能优化 等方向。
作为 PG中国分会官方授权讲师、PostgreSQL ACE 讲师认证专家,我长期活跃在一线项目实战中,拥有 10年以上大型数据库管理与优化经验,曾深度参与电信、金融、政务等多个行业的数据库性能调优与迁移项目。
欢迎关注我,一起深入探索数据库的无限可能,技术交流不设限!
📌 觉得有收获的话,记得点赞、收藏、转发支持一下哦,别忘了关注我获取更多数据库干货~
安呀智数据坊|我们能做什么
无论你是业务系统的技术负责人,还是数据部门的第一响应人,我们都能为你提供可靠的支持:
数据库类型支持
Oracle / MySQL / PostgreSQL / SQL Server 等主流数据库
核心服务内容
性能优化 / 故障处理 / 数据迁移 / 备份恢复 / 版本升级 / 补丁管理
系统性支持
深度巡检 / 高可用架构设计 / 应用层兼容评估 / 运维工具集成
专项能力补充
定制课程培训 / 甲方团队辅导 / 复杂问题协作排查 / 紧急救援支持
📮 如果你有一张删不掉的表、一个跑不动的查询,或者一场说不清的升级风险,欢迎来找我们聊聊。
关键词回复(可见相应文章):
oracle、mysql、pg、postgresql、sql、性能优化、故障处理、数据迁移、备份恢复、版本升级、补丁管理、深度巡检、解决方案、架构设计......

添好友1对1咨询
\ | /
★
动动你的手指
给【安呀智数据坊】加个星标吧~
这样你就不会丢下我啦~
记得加星标呀!









