## 为什么需要tmux
SSH断开、网络波动导致终端会话中断,跑了一天的训练任务全丢。或者打开一堆终端窗口,切来切去找不到刚才的日志。tmux解决这两个问题:会话持久化 + 多窗口管理。
## 安装
# macOS
brew install tmux
# Ubuntu/Debian
apt install tmux
# CentOS/RHEL
yum install tmux
## 核心概念
tmux有三层结构:Session(会话) > Window(窗口) > Pane(面板)。
Session是独立的工作区,关掉终端再连回来还能恢复。Window类似浏览器标签页。Pane是窗口内的分割区域。
## 快速上手
### 启动和分离
# 创建新会话
tmux new -s mywork
# 分离会话(保持后台运行)
# 快捷键:Ctrl+b d
# 重新附着
tmux attach -t mywork
### 常用快捷键
所有操作前先按前缀键 `Ctrl+b`(默认),按功能键:
# 窗口管理
c 创建新窗口
, 重命名当前窗口
n/p 切换到下一个/上一个窗口
0-9 切换到指定编号窗口
# 面板操作
% 垂直分割面板(左右)
" 水平分割面板(上下)
方向键 切换面板
x 关闭当前面板
空格 切换面板布局
# 其他
d 分离会话
? 查看所有快捷键
[ 进入复制模式(用vi键位翻页)
### 配置文件
`~/.tmux.conf` 让操作更顺手。我的配置:
# 修改前缀键为Ctrl+a(按起来顺手)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 开启鼠标支持(可以点选面板、滚屏)
set -g mouse on
# 设置256色
set -g default-terminal "screen-256color"
# 窗口编号从1开始
set -g base-index 1
# 分割面板快捷键改得更顺手
bind | split-window -h
bind - split-window -v
# 重载配置
bind r source-file ~/.tmux.conf \; display "Reloaded!"
保存后执行 `tmux source ~/.tmux.conf` 或按 `Ctrl+b :source-file ~/.tmux.conf` 生效。
## 实战场景
### 场景1:远程服务器跑任务
在雨云的服务器上跑模型训练,SSH连上去后:
tmux new -s train
python train.py
# Ctrl+b d 分离,关掉终端
天连回来:`tmux attach -t train`,训练还在跑。雨云的机器稳定,配合tmux基本不用担心任务中断。
### 场景2:同时监控多个日志
tmux new -s monitor
# Ctrl+b % 垂直分割
# 左面板:tail -f app.log
# 右面板:tail -f error.log
# Ctrl+b " 再把右面板水平分割,看系统资源
htop
### 场景3:复制粘贴
默认鼠标选中就是复制,但tmux有自己的剪贴板。按 `Ctrl+b [` 进入复制模式,用vi键位移动,空格开始选中,回车复制。`Ctrl+b ]` 粘贴。
## 脚本化操作
写脚本批量创建会话:
#!/bin/bash
SESSION="dev"
tmux new-session -d -s $SESSION
# 第一个窗口:编辑器
tmux rename-window -t $SESSION:1 "editor"
tmux send-keys -t $SESSION:1 "vim ." C-m
# 个窗口:服务器
tmux new-window -t $SESSION -n "server"
tmux send-keys -t $SESSION:2 "npm run dev" C-m
# 第三个窗口:git
tmux new-window -t $SESSION -n "git"
tmux send-keys -t $SESSION:3 "git status" C-m
tmux select-window -t $SESSION:1
tmux attach -t $SESSION
## 常见问题
问:tmux里滚屏怎么搞?
答:`Ctrl+b [` 进入复制模式,用PgUp/PgDn翻页,q退出。或者配置文件里开鼠标支持,直接用滚轮。
问:重命名会话/窗口?
答:`tmux rename-session -t old new`,窗口按 `Ctrl+b ,` 直接改名。
问:窗口太多乱了?
答:`Ctrl+b w` 显示窗口列表,回车选中。或者 `Ctrl+b f` 搜索窗口名。
问:tmux和screen有什么区别?
答:tmux配置更灵活,分屏功能强,社区活跃。screen太老了,别用了。
## 备份配置
把 `~/.tmux.conf` 放到Git仓库里,换机器拉下来就能用。我习惯在雨云的服务器上也同步一份,新机器秒变熟悉的工作环境。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容