tmux使用手册
- 会话与进程
- 需求痛点
- tmux作用
- 使用场景
- 安装tmux
- 常用命令
- 在tmux中编译代码
- 多个显示器分辨率的tmux attach出现窗口不匹配的问题
会话与进程
命令行的经典使用方式:
- 用户打开一个终端窗口(terminal window);
- 用户在终端窗口中输入命令: ls、cd等等;
上述用户和计算机之间的这种临时交互,称为一次会话(session),会话的特点是终端窗口和其中启动的命令进程是连在一起的,打开窗口,会话开始,关闭窗口,会话结束,同时会话里运行的进程不论是否运行完,也随之终止。
需求痛点
- ssh远程访问服务器,因为网络不稳定,编译/下载,或者其他命令被打断,无法持续进行;
- 台式机的工作现场(环境变量、历史命令等)无法离开工位后,通过笔记本ssh登录使用;
tmux作用
主要是将用户会话和终端窗口“解绑”,将它门分离开,这样如果终端窗口关闭了(断网),和服务器的会话还能挂在后台。
tmux作用如下:
- tmux允许在单个窗口中,同时去访问多个终端会话:对同时运行多个命令行程序有帮助,比如会话1用来编译,会话2用来下载;
- tmux可以让终端窗口接入已经存在的会话:比如终端窗口通过ssh连接进入服务器后,还可以通过tmux命令接入已经存在的终端会话;
- tmux允许每个会话有多个终端窗口:比如张三可以在终端窗口中用tmux使用一个会话,李四一样也可以用这个会话,因此可以多人实时共享终端会话;
- tmux还可以像vim一样支持窗口任意垂直或者水平拆分;
使用场景
安装tmux
- ubuntu或者debian(Debian是一个由自由软件社区发布的开放源代码操作系统)安装
sudo apt-get install tmux
- CentOS或Fedora安装
sudo yum install tmux
常用命令
# 会话管理
1. 启动tmux
tmux2. 退出tmux
输入exit或者使用快捷键(Ctrl+d)3. 新建会话
tmux new -s <session_name>4. 分离会话
tmux detach (或者快捷键Ctrl+b d)5. 查看会话
tmux ls # 或者是tmux ls-session6. 接入会话
tmux attach -t session_number # 使用会话ID
tmux attach -t <session_name> # 使用会话名称7. 杀死会话
tmux kill-session -t session_number # 使用会话ID
tmux kill-session -t <session_name> # 使用会话名称8. 切换会话
tmux switch -t session_number # 使用会话ID
tmux switch -t <session_name> # 使用会话名称9. 重命名会话
tmux rename-session -t session_number <new_session_name># 窗口操作
1. 划分窗口
tmux split-window # 划分上下两个窗口
tmux split-window # 划分左右两个窗口2. 窗口间光标切换
tmux select-pane -U # 上方窗口,快捷键:Ctrl+b 方向键↑
tmux select-pane -D # 下方,快捷键:Ctrl+b 方向键↓
tmux select-pane -L # 左边,快捷键:Ctrl+b 方向键←
tmux select-pane -R # 右边,快捷键:Ctrl+b 方向键→3. 新建窗口
tmux new-window # 新建窗口
tmux new-window -n <window_name> # 新建指定名称窗口
Ctrl+b c # 新建窗口4. 关闭窗口
Ctrl+b & # 关闭窗口5. 窗口重命名
tmux rename-window <nwe_name> # 快捷键:Ctrl+b ',' 然后输入窗口name6. 窗口切换
Ctrl+b p # 切换到上一个窗口
Ctrl+b n # 切换到下一个窗口
Ctrl+b <number> # 切换到指定编号窗口7. 在所有窗口中查找内容
Ctrl+b f # 在所有窗口中查找内容
在tmux中编译代码
ssh username@serverIP # 打开窗口,ssh远程到服务器
tmux new -s build # 创建一个名为new_tmux_name的终端会话'
.... # 执行编译命令:source、make等等
tmux detach # 将build会话和当前窗口分离,也可以执行Ctrl+b d,将会话分离
# 等一段时间后,假设编译结束了
tmux attach-session -t build # 再次连接build会话
多个显示器分辨率的tmux attach出现窗口不匹配的问题
主要是多个不同显示大小的终端在attach同一个session,出现窗口不匹配的现象,比如笔记本上tmux attach接入会话激活窗口之后,再到比较大分辨率的PC上去tmux attach窗口,出现窗口显示不完整有一些“…”。
解决方案:将其他较小分辨率的终端detach掉(比如最小的笔记本的的窗口执行:ctrl+a 再执行 shift+d)