之前看到S同事用同一个命令窗口对实验室server的GPU和进程进行监控,觉得很有意思,而且可以很高效的利用窗口。问了一下是用的tmux,于是今天实践了一下,非常有意思。同时在这里也感谢一下S同事跟我分享这些知识和相关的链接。
tmux的安装这里就不赘述了,下面我们直接来看下tmux的三个模块,即会话、窗口和面板:
- session 会话:一个服务器可以包含多个会话
- window 窗口:一个会话可以包含多个窗口
- pane 面板:一个窗口可以包含多个面板
使用tmux我们可以在同一个命令窗口中进行分栏(即不同的面板),比如上下分,左右分,并且可以分成好多不同的小区域进行不同的功能。例如这里我希望把一个命令窗分成上下两部分,上半部分监控GPU,下半部分监控系统的进程。
首先我们需要新建一个tmux session,可以使用命令tmux new-session -s work
,最后的work为这个session的名字,建好之后只要不删除这个seesion,那么下次重新打开命令窗的时候,再次输入这个命令还会显示和上次一样的窗口设置,接下来我们就可以在这个session里使用tmux的功能了。
使用tmux的方式是先按快捷键组合,然后按功能键。比如默认的快捷键组合为ctrl+b
,那么在同时按下ctrl和b之后,我们可以再按一个对应的功能键来实现希望的功能。具体就从分屏这个简单的例子说吧,如果我们想在窗口中进行上下分屏,我们就先同时按下快捷键组合ctrl
和b
,然后松开这两个按键,接下来我们按下双引号键"
。这样屏幕就像下图一样被分成了上下两个部分。
现在屏幕被分成了两个部分,我们在这两个部分中分别写代码。需要提示的是,如果我们想从一个pane切换到另一个pane,可以使用ctrl+b
然后按下方向键
。现在大家看到上图中间的横线右半边是绿色,说明下半个pane是处于激活状态。同理,如果是上半个pane为激活状态,则左半边横线为绿色。
接下来我们使用Linux上的一点小技巧中介绍的方法,对GPU和进程进行监控。我们在上边的pane输入watch -n1 --color gpustat
,在下边的pane输入htop
,这样我们就得到了下图的结果:
目前我们虽然实现了对GPU和进程同时监控,不过窗口布局不是很好看,我希望把上半个pane缩小一点,下半个pane增大一点,这样可以更好的利用整个窗口。网上说的是可以使用ctrl+b
后按着ctrl
不放,并按方向键
,不过我这里实验了发现不成功,依然成了切换pane。我用的是先按ctrl+b
,然后使用alt+上/下键
进行pane大小的调整。
理论上讲使用ctrl/alt
加方向键
是两种不同的调整方法:
- Ctrl+方向键 :以1个单元格为单位移动边缘以调整当前面板大小
- Alt+方向键 :以5个单元格为单位移动边缘以调整当前面板大小
可是我这里只有第二种方法,即用alt+方向键
的方法可以使用。
除了分屏的功能外,还可以使用tmux命令将两个命令窗的内容同步,也就是关联两个命令窗。更多关于tmux使用和功能的介绍可以参考以下两篇文章:
最后再附上一个所有功能键的示意图:
图片来源(LINK)