tmux里的session,window,pane

tmux 使用指南
本文详细介绍如何使用 tmux 进行高效的终端会话管理,包括 session、window 和 pane 的创建、切换、调整等操作方法。

tmux里的session,window,pane
—-

session指的是按下tmux命令后 存在的连接便是session
创建session
tmux

创建并指定session名字
tmux new -s $session_name

删除session
Ctrl+b :kill-session

临时退出session
Ctrl+b d

列出session
tmux ls

进入已存在的session
tmux a -t $session_name

删除所有session
Ctrl+b :kill-server

删除指定session
tmux kill-session -t $session_name

—-

window在session里,可以有N个window,并且window可以在不同的session里移动
创建window
Ctrl+b +c

删除window
Ctrl+b &

下一个window
Ctrl+b n

上一个window
Ctrl+b p

重命名window
Ctrl+b ,

在多个window里搜索关键字
Ctrl+b f

在相邻的两个window里切换
Ctrl+b l

—-

pane在window里,可以有N个pane,并且pane可以在不同的window里移动、合并、拆分
创建pane
横切split pane horizontal
Ctrl+b ” (问号的上面,shift+’)

竖切split pane vertical
Ctrl+b % (shift+5)

按顺序在pane之间移动
Ctrl+b o

上下左右选择pane
Ctrl+b 方向键上下左右

调整pane的大小
Ctrl+b :resize-pane -U #向上
Ctrl+b :resize-pane -D #向下
Ctrl+b :resize-pane -L #向左
Ctrl+b :resize-pane -R #向右
在上下左右的调整里,最后的参数可以加数字 用以控制移动的大小,例如:
Ctrl+b :resize-pane -D 50

在同一个window里左右移动pane
Ctrl+b { (往左边,往上面)
Ctrl+b } (往右边,往下面)

删除pane
Ctrl+b x

更换pane排版
Ctrl+b “空格”

移动pane至window
Ctrl+b !

移动pane合并至某个window
Ctrl+b :join-pane -t $window_name

显示pane编号
Ctrl+b q

按顺序移动pane位置
Ctrl+b Ctrl+o

—-
其他:

复制模式
Ctrl+b [
空格标记复制开始,回车结束复制。

粘贴最后一个缓冲区内容
Ctrl+b ]

选择性粘贴缓冲区
Ctrl+b =

列出缓冲区目标
Ctrl+b :list-buffer

查看缓冲区内容
Ctrl+b :show-buffer

vi模式
Ctrl+b :set mode-keys vi

显示时间
Ctrl+b t

快捷键帮助
Ctrl+b ? (Ctrl+b :list-keys)

tmux内置命令帮助
Ctrl+b :list-commands

这条命令的作用是在 `tmux` 中**水平分割当前窗口**,并创建一个占窗口宽度 **25%** 的新面板,在新面板中运行 `htop` 进程监控工具。以下是详细解析和常见问题解决方案: --- ### **命令解析** ```bash tmux split-window -h -p 25 "htop" ``` - **`split-window`**: 分割当前窗口。 - **`-h`**: 水平分割(左右面板)。若用 `-v` 则为垂直分割(上下面板)。 - **`-p 25`**: 新面板占窗口宽度的 **25%**(剩余 75% 归原面板)。 - **`"htop"`**: 在新面板中启动的命令(需已安装 `htop`)。 --- ### **常见错误及修复** #### **1. 报错 `create pane failed: -p invalid`** - **原因**: - `-p` 参数位置错误(某些 `tmux` 版本要求 `-p` 必须在 `-h`/`-v` 之前)。 - 百分比值非整数或超出 1-100 范围。 - **修复**: ```bash # 正确写法(将 -p 放在操作类型前) tmux split-window -p 25 -h "htop" ``` #### **2. 命令未执行** - **原因**: - `htop` 未安装。 - 命令路径未正确指定(如 `/usr/bin/htop`)。 - **修复**: ```bash # 使用绝对路径或先检查命令是否存在 tmux split-window -h -p 25 "which htop >/dev/null && htop || bash" ``` #### **3. 面板布局不符合预期** - **原因**: - 窗口总宽度不足,导致百分比计算异常。 - 连续多次分割未调整百分比。 - **修复**: ```bash # 先创建主面板,再分割剩余空间 tmux split-window -h -p 75 "main_task" # 主面板占75% tmux split-window -h -p 33 "htop" # 剩余25%中的33%(即总窗口的8.25%,可能不符合预期) ``` **更优方案**: 使用固定尺寸(`-l`)或动态计算百分比。 --- ### **高级用法** #### **1. 动态调整面板大小** ```bash # 分割后调整新面板为25%宽度 tmux split-window -h "htop" # 先分割(默认50%) tmux resize-pane -t 1 -x 25 # 将面板1(索引从0开始)宽度设为25% ``` #### **2. 在脚本中安全分割** ```bash #!/bin/bash SESSION="monitor" tmux new-session -s "$SESSION" -n dashboard -d # 检查面板是否存在后再分割 if tmux list-panes -t "$SESSION:dashboard" | grep -q active; then tmux split-window -h -p 25 -t "$SESSION:dashboard" "htop" else echo "错误:目标窗口不存在" >&2 exit 1 fi ``` #### **3. 结合 `send-keys` 实现复杂操作** ```bash # 分割面板并模拟交互式输入 tmux split-window -h -p 25 -t "$SESSION:dashboard" tmux send-keys -t "$SESSION:dashboard.1" "htop" C-m # 确保命令执行 ``` --- ### **性能优化建议** 1. **减少面板数量**:每个面板会消耗终端资源,避免过度分割。 2. **禁用非必要渲染**: ```bash # 在 ~/.tmux.conf 中添加 set -g status off # 关闭状态栏 set -g monitor-activity off # 禁用活动监控 ``` 3. **使用轻量级命令**:如 `glances` 替代 `htop`(需安装)。 --- ### **替代方案** #### **1. 使用 `-l` 指定固定列数** ```bash # 水平分割,新面板固定30列宽 tmux split-window -h -l 30 "htop" ``` #### **2. 通过 `tmux` 配置文件定义快捷键** ```bash # ~/.tmux.conf bind-key H split-window -h -p 25 "htop" ``` 按 `Ctrl+B H` 即可快速分割并启动 `htop`。 --- ### **调试技巧** 1. **打印面板信息**: ```bash tmux list-panes -t "$SESSION:dashboard" ``` 2. **手动验证命令**: ```bash # 在终端直接运行,观察是否报错 tmux split-window -h -p 25 "htop" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值