暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

告别“窗口多开”焦虑:Linux 终端神器 tmux,让你的效率翻倍(附超全实战配置)

安呀智数据坊 2026-03-02
116

注: 本文为安丫科技刘峰的原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。

做运维和开发的兄弟们,有没有经历过这种“崩溃时刻”?

你连着远程服务器,跑着一个需要几小时才能跑完的数据迁移脚本。

眼看进度条到了 99%,突然——网络闪断了! 

或者你的笔记本不小心合盖休眠了!

再连上去一看,SSH 断开,进程被杀,所有进度清零...

那一刻,是不是想砸电脑?🤬

别慌,今天就给大家安利一个Linux 终端神器——tmux

它不仅能让你的任务“永不断线”,还能让你像黑客电影里一样,在一个屏幕里同时监控 CPU、看日志、敲代码。

花 5 分钟看完这篇,彻底告别断线焦虑,让你的终端操作效率起飞! 


01

为什么你需要 tmux?——三大

 核心痛点

在直接学习命令之前,我们先理解 tmux 解决了哪些关键问题。


1

会话保持 (Session Persistence) 

痛点


当你通过 SSH 连接到远程服务器并执行一个需要数小时的脚本时,如果你的本地网络中断、笔记本合盖休眠或 SSH 连接超时,服务器上的那个任务会因为 SIGHUP 信号而被终止。

所有未保存的工作和运行中的进程都会丢失。


tmux 解决方案


tmux 在服务器上创建一个独立的会话(Session),你的所有操作都在这个会话中进行。

tmux 会话与你的 SSH 连接是分离的。

即使 SSH 断开,tmux 会话及其中的所有进程依然会在服务器后台持续运行。

你可以随时重新连接服务器,并“附加”(attach)回之前的会d话,一切都将恢复原样。


2

窗口管理 (Window Management) 

痛点


当需要同时查看日志、编辑代码、执行命令时,你可能需要打开多个 SSH 连接窗口,并在它们之间频繁切换,非常繁琐。


tmux 解决方案


在一个 tmux 会话中,你可以创建多个“窗口”(Window),就像浏览器的标签页一样。

每个窗口都是一个独立的 shell 环境,你可以在窗口之间快速切换,极大地简化了多任务管理。


3

窗格分割 (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 后,松开这两个键,然后再按下一个功能键。


1

会话管理 (Session)

启动新会话


# 启动一个默认会话
tmux

# 启动一个命名会话(推荐!)
tmux new -s my_session_name


查看所有会话

tmux ls


示例

03 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


2

窗口管理 (Window)

创建新窗口 


  • 快捷键

    Ctrl + b 然后 c


切换窗口


  • Ctrl+b 然后 w

    弹出窗口列表(最直观)

  • Ctrl + b 然后 p (Previous)

    切换到上一个窗口。

  • Ctrl + b 然后 n (Next)

    切换到下一个窗口。

  • Ctrl + b 然后 [窗口编号] (如 0, 1, 2...)

     直接跳转到指定编号的窗口。


重命名当前窗口


  •  快捷键

    Ctrl + b 然后 ,


关闭当前窗口


  • 快捷键

    Ctrl + b 然后 & (会提示确认)


3

窗格管理 (Pane) 

垂直分割


  • 快捷键

    Ctrl + b 然后 %


 水平分割


  • 快捷键

    Ctrl + b 然后 "


在窗格间切换


  • 快捷键

    Ctrl + b 然后 [方向键] (上/下/左/右)


调整窗格大小


  • 快捷键

    按住 Ctrl + b 不松开,同时按 [方向键]


关闭当前窗格


  • 快捷键

    Ctrl + b 然后 x (会提示确认)

  • 或者直接在窗格中输入 exit 命令。


最大化/还原当前窗格 (临时全屏)


  • 快捷键

    Ctrl + b 然后 z (Zoom)


05

 高级技巧与个性化配置

1

复制模式 (Copy Mode)

tmux 允许你像在 vim 中一样,回滚、浏览和复制终端的历史输出。


进入复制模式


现代数据库的 SGA 通常以数十甚至数百 GB 计。


共享(Shared)


使用方向键、PageUp/PageDown 自由滚动。


开始选择 (vi 模式下)


按下 Space (空格键)。


移动光标选择文本



复制 (vi 模式下)


按下 Enter。


粘贴


Ctrl + b 然后 ]


2

 个性化配置 (~/.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,你可以构建一个安全、高效、可监控的工作环境。


1

场景描述

任务


使用 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 等主流数据库

  • 核心服务内容

    性能优化 / 故障处理 / 数据迁移 / 备份恢复 / 版本升级 / 补丁管理

  • 系统性支持

    深度巡检 / 高可用架构设计 / 应用层兼容评估 / 运维工具集成

  • 专项能力补充

    定制课程培训 / 甲方团队辅导 / 复杂问题协作排查 / 紧急救援支持

📮 如果你有一张删不掉的表、一个跑不动的查询,或者一场说不清的升级风险,欢迎来找我们聊聊。

END

关键词回复(可见相应文章):

oracle、mysql、pg、postgresql、sql、性能优化、故障处理、数据迁移、备份恢复、版本升级、补丁管理、深度巡检、解决方案、架构设计......

添好友1对1咨询

\ | /

动动你的手指

【安呀智数据坊】加个星标吧~

这样你就不会丢下我啦~

记得加星标呀!

文章转载自安呀智数据坊,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论