终端复用器tumx配置与使用

使用SSH登录远程计算机,打开远程窗口执行命令,若突然断线,由于SSH会话终止,进程消失,再次登录时就无法找到上次执行命令了。

为解决这个问题,可使用tmux将会话(session)与终端窗口解绑,达成:窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

基本概念

【会话(Session)】
tmux 会话是一个独立的运行环境,可以包含多个窗口。即使断开连接,会话也会继续在后台运行。

【窗口(Window)】
每个会话可以包含多个窗口,类似于浏览器中的标签页。

【面板/窗格(Pane)】
每个窗口可以分割成多个面板,允许同时查看和操作多个终端。

tmux(Terminal Multiplexer)是一个终端复用工具,它允许你在单个终端窗口中创建多个虚拟终端会话,并能保持这些会话在后台运行。与直接使用终端相比,tmux 提供了更强大的会话管理功能。

特性 窗口 (Window) 窗格 (Pane)
概念类比 浏览器的新标签页 (Tab) 屏幕上的分屏 (Split)
可见性 同一时间只能看到一个窗口 同一个窗口内,所有窗格同时可见
空间占用 独占整个终端屏幕 共享当前窗口的屏幕空间
数量关系 一个会话可以有多个窗口 一个窗口可以切分成多个窗格
默认快捷键 Ctrl+b 随后按 c (创建) Ctrl+b 随后按 %" (分屏)

【tmux核心优势】

  • 会话持久化:即使网络断开,会话仍保留在服务器上
  • 多窗口/面板管理:高效组织多个工作环境
  • 会话共享:多个用户可以同时连接同一个会话
  • 它可以让新窗口"接入"已经存在的会话。

基本使用方法

安装

1
2
3
4
5
6
7
8
# Ubuntu 或 Debian
$ sudo apt-get install tmux

# CentOS 或 Fedora
$ sudo yum install tmux

# Mac
$ brew install tmux

启动与退出

安装完成后,在终端输入tmux进入Tmux窗口。

开启效果

按下Ctrl+d或者在终端输入exit即可退出。

前缀键

tmux 的所有操作都需要先按下前缀键(默认是 Ctrl+b),然后输入命令键。

举例——打开帮助:

  1. 按下Ctrl+b
  2. ?
    输入?后的效果
  3. 按下q或者ESC退出

会话管理

创建会话(不直接使用tmux)

默认启动的tmux窗口编号为0,但只是编号的方式并不直观,可用下述命令为创建新的会话并为会话命名:

1
tmux new -s <session-name>

以training为名效果

后面会讲到如何为会话重命名

分离会话

在Tmux窗口中按下 Ctrl+b d,或者直接输入tmux detach命令,将当前会话与窗口分离。

1
tmux detach

detach效果
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。

查看已有会话

1
2
3
$ tmux ls
# or
$ tmux list-session

tmux ls

或者:Ctrl+b s.

接入已存在会话

tmux attach来接入会话,参数如下设置:

1
2
3
4
5
# 使用会话编号
$ tmux attach -t 0

# 使用会话名称
$ tmux attach -t <session-name>

杀死会话

1
2
3
4
5
# 使用会话编号
$ tmux kill-session -t 0

# 使用会话名称
$ tmux kill-session -t <session-name>

切换会话

1
2
3
4
5
# 使用会话编号
$ tmux switch -t 0

# 使用会话名称
$ tmux switch -t <session-name>

重命名会话

将0号会话重命名:

1
$ tmux rename-session -t 0 <new-name>

或者: Ctrl+b $

窗口操作

Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。

划分窗格

1
2
3
4
5
# 划分上下两个窗格
$ tmux split-window

# 划分左右两个窗格
$ tmux split-window -h

或者用前缀键的快捷键

1
2
Ctrl+b %:划分左右两个窗格。
Ctrl+b ":划分上下两个窗格。

左右划分效果

在窗格之间移动光标位置

鼠标点来点去,发现无法将光标聚焦在目标窗格,只能使用命令进行切换移动:

1
2
3
4
5
6
7
8
9
10
11
# 光标切换到上方窗格
$ tmux select-pane -U

# 光标切换到下方窗格
$ tmux select-pane -D

# 光标切换到左边窗格
$ tmux select-pane -L

# 光标切换到右边窗格
$ tmux select-pane -R

前缀键方式:

1
2
3
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。

从右下移动到左边

交换窗格位置

1
2
3
4
5
# 当前窗格上移
$ tmux swap-pane -U

# 当前窗格下移
$ tmux swap-pane -D

前缀键:

  • Ctrl+b {:当前窗格与上一个窗格交换位置。
  • Ctrl+b }:当前窗格与下一个窗格交换位置。
  • Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
  • Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。

关闭窗格

关闭当前窗格: Ctrl+b x

其他操作

  • 当前窗格拆分成独立窗口: Ctrl+b !
  • 当前窗格全屏显示/恢复大小: Ctrl+b z
  • 按照箭头方向调整窗格大小:Ctrl+b Ctrl+<arrow key>
  • 显式窗格编号: Ctrl+b q

窗口管理

除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。

创建窗口

1
2
3
4
$ tmux new-window

# 新建一个指定名称的窗口
$ tmux new-window -n <window-name>

或者:
Ctrl+b c创建一个新窗口,状态栏会显示多个窗口的信息。

切换窗口

1
2
3
4
5
# 切换到指定编号的窗口
$ tmux select-window -t <window-number>

# 切换到指定名称的窗口
$ tmux select-window -t <window-name>

或者:

  • Ctrl+b p:上一个窗口
  • Ctrl+b b:下一个窗口
  • Ctrl+b <number> :切换到指定编号窗口
  • Ctrl+b w:从列表中选择窗口。
    从列表选择窗口

重命名窗口

1
$ tmux rename-window <new-name>

或者: Ctrl+b .

使用技巧

Session恢复

即使重启服务器,也可以恢复tmux session

1
2
3
4
5
6

# 安装插件
git clone https://github.com/tmux-plugins/tmux-resurrect ~/clone/path

# 在 .tmux.conf 中添加
set -g @plugin 'tmux-plugins/tmux-resurrect'

复制模式

1
2
3
4
Ctrl+b [ 进入复制模式
使用方向键移动光标
空格开始选择,回车复制
Ctrl+b ] 粘贴

多pane同时输入相同命令

1
2
3
4
5
# 进入同步模式
Ctrl+b :setw synchronize-panes on

# 关闭同步模式
Ctrl+b :setw synchronize-panes off

其他

1
2
3
4
5
6
7
8
9
10
11
# 列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys

# 列出所有 Tmux 命令及其参数
$ tmux list-commands

# 列出当前所有 Tmux 会话的信息
$ tmux info

# 重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf

参考博客

作者

Zhou

发布于

2026-07-09

更新于

2026-07-09

许可协议

评论

+ + +