tmux 是什么
tmux 是终端复用器,把终端分成会话、窗口、面板三层:一个会话可以包含多个窗口,一个窗口又能切成多块面板。它的核心价值是会话与连接解耦——SSH 断开后会话里的进程继续跑,重连即回到离开时的样子。此外 send-keys 允许把命令注入会话,这让 tmux 也能作为轻量级的运维自动化工具使用。
基本信息
| 用途 | 会话保持、分屏查看、命令注入与自动化 |
|---|---|
| 语法 | tmux new|attach|ls|kill-session;命令模式用 tmux 子命令操作 |
| 快捷键前缀 | Ctrl+b,先按前缀再按功能键(d 分离、% 竖分、双引号 横分、方向键切换面板) |
| 所属软件包 | tmux(多数发行版仓库自带,最小化系统需自行安装) |
典型使用场景
- 长时间任务:跑升级、数据导入这类耗时操作,断线也不中断
- 一屏多看:左看日志滚动,右看指标或 shell,切换成本几乎为零
- 远程办公切换网络:笔记本换网络导致 SSH 断开,重连后一切照旧
- 多人协作:共享同一个会话观察同一个现象,避免口头描述失真
- 脚本化驱动:用 send-keys 把命令注入会话,适合必须在交互环境执行的操作
常用示例
常用示例
tmux new -s ops # 新建并进入会话
tmux ls; tmux attach -t ops # 列出会话 / 重新接入
tmux new -s ops -d 'watch -n 2 uptime' # 后台建会话并直接运行命令
tmux split-window -h -t ops 'tail -f /var/log/app.log'
tmux send-keys -t ops 'systemctl status nginx' Enter
tmux kill-session -t ops # 结束整个会话(会杀掉其中的进程)配置文件常用项
配置文件常用项
# ~/.tmux.conf
# set -g history-limit 10000 滚动缓冲放大到一万行
# set -g mouse on 开启鼠标选择面板与滚动(tmux 2.1 及以上)
# set -g base-index 1 窗口编号从 1 开始
# set -w -g mode-keys vi 复制模式使用 vi 风格按键常用快捷键
| 按键 | 作用 | 说明 |
|---|---|---|
| d | 分离会话 | SSH 断开与会话分离效果相同,进程继续运行 |
| c / n / p | 新建窗口 / 下一个 / 上一个 | 在同一会话内切换任务视角 |
| % 与 双引号 | 垂直与水平分割面板 | 同一个窗口里同屏对比两路输出 |
| 方向键 | 在面板之间移动 | 大屏下多面板布局更高效 |
| z | 面板最大化切换 | 临时放大某块面板,再按恢复 |
| [ | 进入复制模式 | 可用搜索与滚动查看历史输出 |
tmux 能让进程抵御 SSH 断开,但不能抵御机器重启:服务器重启后所有会话都会消失。需要开机自动拉起的工作应交给 systemd 或专门的会话持久化工具,而不是指望 tmux。
send-keys 注入的命令默认不会自动执行,必须把 Enter 作为单独的参数传进去;命令里本身含引号时要处理好转义,否则会注入出意料之外的内容。