tmux终端复用和会话管理
- 2025-04-28 21:13:00
- 丁国栋
- 原创 72
通过ssh登录服务器后如何在一个窗口内划分多个窗口,比如把一个屏幕拆分成四块,这样就可以同时看四个命令行的交互结果
这种场景经常用于实时调试(例如边调试边查看日志输出或者性能情况)或者多任务操作(一个窗口内操作不同的服务)。
可以通过以下几种方法在 SSH 登录后实现一个窗口内划分多个终端窗口(pane, 窗格)的效果:
方法 1:使用终端复用工具(推荐) 1. tmux
(最灵活)
tmux
:功能强大,适合长期维护的会话。
-
安装 tmux:
sudo apt install tmux # Debian/Ubuntu sudo yum install tmux # CentOS/RHEL
-
基本操作:
-
启动新会话:
tmux
-
横向分割:
Ctrl + B
后按%
-
纵向分割:
Ctrl + B
后按"
(双引号) -
切换窗口:
Ctrl + B
+ 方向键 -
创建新窗口:
Ctrl + B
+c
-
滚动查看历史:
Ctrl + B
+[
,按q
退出 -
退出会话(后台运行):
Ctrl + B
+d
-
列出会话:
tmux ls
或者tmux list-sessions
-
重新连接会话:
tmux attach
或tmux attach -t 0
,0 就是会话1
-
-
进阶技巧:
-
支持自定义布局(如四宫格),通过
tmux split-window
命令组合实现。 -
配置文件(
~/.tmux.conf
)可绑定快捷键。
-
2. screen
(传统工具)
-
安装:
sudo apt install screen
-
分割窗口:
-
Ctrl + A
+|
:垂直分割 -
Ctrl + A
+S
:水平分割(需大写) -
切换区域:
Ctrl + A
+Tab
-
关闭当前区域:
Ctrl + A
+X
-
方法 2:SSH 客户端自带分屏 部分 SSH 客户端支持本地分屏(无需服务器配置):
-
Windows:
-
MobaXterm:直接拖拽标签页分栏。
-
Tabby:支持面板分割(快捷键
Ctrl + Shift + P
)。
-
-
macOS/Linux:
-
iTerm2(macOS):
Cmd + D
(垂直分割),Cmd + Shift + D
(水平分割)。 -
Terminator(Linux):
Ctrl + Shift + E
(垂直),Ctrl + Shift + O
(水平)。
-
tmux如果有多个会话,如何恢复连接至某个特定的会话?
在 tmux
中,如果有多个会话(session),可以通过以下方法恢复连接到特定的会话:
1. 查看所有会话列表 首先,列出当前存在的所有 tmux
会话:
tmux list-sessions
或简写:
tmux ls
输出示例:
session1: 1 windows (created Tue Oct 10 14:00:00 2023) session2: 2 windows (created Tue Oct 10 15:00:00 2023)
- 每行显示一个会话的名称、窗口数量及创建时间。
2. 连接到指定会话 方法 1:通过会话名称连接
tmux attach -t <session-name>
示例:
tmux attach -t session2
-t
表示目标(target),后接会话名称。
方法 2:通过会话编号连接 如果会话没有自定义名称(默认以数字编号),可以用编号连接:
tmux attach -t 0 # 连接到第一个会话
3. 在已连接的 tmux
中切换会话 如果已处于某个 tmux
会话中,无需退出即可切换:
- 按下前缀键(默认
Ctrl + B
),然后输入:
进入命令模式。 -
输入以下命令:
switch-client -t <session-name>
示例:
switch-client -t session2
4. 会话管理常用命令
命令 | 作用 |
---|---|
tmux new -s <name> |
创建新会话并命名 |
tmux rename-session -t <old-name> <new-name> |
重命名会话 |
tmux kill-session -t <name> |
终止指定会话 |
tmux kill-server |
终止所有会话(慎用) |
5. 实用技巧 自动连接常用会话 在 ~/.bashrc
或 ~/.zshrc
中添加别名快速连接:
alias tmux-session1="tmux attach -t session1"
之后只需输入 tmux-session1
即可快速恢复。
会话持久化 即使关闭终端或断开 SSH,tmux
会话仍会在后台运行。重新登录后直接 attach
即可恢复工作环境。
总结
-
恢复会话:
tmux attach -t <name>
-
切换会话:
Ctrl + B
+:
+switch-client -t <name>
-
管理会话:
tmux ls
(查看)、tmux kill-session
(删除)
掌握这些操作后,可以轻松在多个 tmux
会话间自由切换!
假设使用tmux分割了4个窗口,如何使用tmux将一个窗口最大化,然后再恢复到之前的四分窗口或者切换到另一个窗口?
在 tmux
中,如果你已经将窗口(Window)分割成 4 个窗格(Panes),可以通过以下方法最大化当前窗格,然后恢复原布局或切换到其他窗格:
1. 最大化当前窗格(Zoom In)
-
快捷键:
-
先按
Ctrl + B
(前缀键),然后按z
(Zoom)。 -
效果:当前窗格会全屏显示,其他窗格暂时隐藏。
-
-
命令行方式(在
tmux
会话内输入)::resize-pane -Z
2. 恢复原布局(Zoom Out)
-
快捷键:
-
再次按
Ctrl + B
+z
(Zoom)。 -
效果:恢复之前的 4 分窗格布局。
-
-
命令行方式:
:resize-pane -Z
(和最大化是同一个命令,按一次放大,再按一次恢复)
3. 切换到其他窗格
-
快捷键:
-
Ctrl + B
+方向键
(上下左右箭头切换相邻窗格)。 -
Ctrl + B
+q
:显示窗格编号,然后按数字键快速切换。
-
-
命令行方式:
:select-pane -U # 切换到上方窗格 :select-pane -D # 下方 :select-pane -L # 左侧 :select-pane -R # 右侧
4. 补充技巧 临时查看其他窗格内容(不切换焦点)
-
Ctrl + B
+{
:将当前窗格与上一个窗格交换位置。 -
Ctrl + B
+}
:将当前窗格与下一个窗格交换位置。
调整窗格大小
-
Ctrl + B
+Alt + 方向键
:按方向键调整窗格大小(需在配置中启用)。 -
或手动输入命令:
:resize-pane -L 10 # 向左扩展 10 格 :resize-pane -R 10 # 向右扩展 10 格
5. 配置优化(可选) 在 ~/.tmux.conf
中添加以下配置,让操作更流畅:
# 启用鼠标支持(点击切换窗格、拖动调整大小) set -g mouse on # 简化窗格切换快捷键(省略前缀键) bind -n C-h select-pane -L # Ctrl+h 切换到左侧窗格 bind -n C-j select-pane -D # Ctrl+j 切换到下方窗格 bind -n C-k select-pane -U # Ctrl+k 切换到上方窗格 bind -n C-l select-pane -R # Ctrl+l 切换到右侧窗格
(修改后需重载配置:tmux source-file ~/.tmux.conf
)
总结
操作 | 快捷键 | 命令 |
---|---|---|
最大化当前窗格 | Ctrl + B + z |
:resize-pane -Z |
恢复原布局 | Ctrl + B + z |
:resize-pane -Z |
切换窗格 | Ctrl + B + 方向键 |
:select-pane -方向 |
注:nohup command &
也可以实现后台运行,终端退出也不会结束,但没有多窗口管理功能。
--