tmux是终端多路复用器。 它让您在一个终端中的多个程序之间轻松切换,分离它们(它们在后台运行)并将其重新连接到不同的终端。
https://github.com/tmux/tmux/wiki
首先明确三个概念,会话session、窗口window、窗格panel。
- 会话:相比开发人员对session一定很熟悉,会话表示用户和计算机之间的一个交流关系,一个会话可以建立多个窗口。会话有两个对立状态,attached(连接)和detached(分离),attached就是用户和会话之间建立了正常连接,可以交互。当用户关闭终端attached状态就会变为detached状态,也可以手动转为detached状态;detached就是用户和会话之间断开了连接,需要先转为attached状态才能交互。
- 窗口:window就是当前终端的窗口,如果终端全屏,就是你一眼可以看到的整个屏幕。
- 窗格:一个窗口可以分成多个窗格,就是将当前屏幕分成好几块(分屏)。
个人认为,一般情况下,一个用户创建一个会话就可以了。然后每个现实中的任务分成一个窗口,每个窗口按需分成多个窗格。比如当我连接的服务器,我会新建一个名为earor的会话,我需要在服务器上跑两个深度学习的训练任务(aeot和pugan),每个任务占用一个窗口。对于aeot任务窗口,分成三个窗格,一个窗格跑训练任务,一个窗格看GPU运行情况,一个窗格执行其他操作;pugan任务也是类似。
然后,tmux的快捷键前缀是ctrl+b
,这些快捷键是在启动tmux之后才可以使用(废话)。比如,启动tmux之后,ctrl+b ?
是帮助,按键方式是:按下ctrl
和b
,松开ctrl
和b
,按下shift
和?
。就是说ctrl+b
按下之后松开再按其他的键,需要按shift
的不能省略。
下面以刚才的例子介绍常用命令:
# 查看所有会话
tmux ls
# 新建一个名为earor的会话,下面会出现状态栏
tmux new -s earor
# 当前窗口名为bash,修改为aeot,此时状态栏左侧显示[earor] 0:aeot* ,0代表第0个窗口
tmux rename-window aeot
# 先用快捷键将aeot窗口分成上下两个窗格,快捷键忽略左右两个反引号`
`ctrl b "`
# 此时光标在下面的窗格,用快捷键将光标移动到上面
`ctrl b 上方向键`
# 继续上部窗窗格分成左右两栏,左边的跑训练任务,右边的显示GPU信息
`ctrl b %`
# 右上角GPU信息不需要太大,用快捷键调小一些,第二次按ctrl不松开,可以连续点按方向键
`ctrl b ctrl 右方向键`
`ctrl b ctrl 上方向键`
# 创建第二个pugan窗口
tmux new-window -n pugan
# 用快捷键切换window窗口切换到最后一个会继续循环,从而展示第一个
## 向前
`ctrl b p`
## 向后
`ctrl b n`
``
# 然后直接关掉终端窗口或者断网,或者键入如下命令或快捷键,会话状态会由attached变成detached
tmux detach
`ctrl b d`
# 重新连接earor会话
tmux attach -t earor
# 如果某个回话中的程序卡住了,可以杀死session
tmux kill-session -t earor
命令还有很多,不常用的也没提。基本上快捷键都有对应的命令,这篇教程希望能带你入门,详细的功能使用需要自己继续探索。
效果图
网友评论