Technic

Linux下使用tmux进行分屏操作

2017-11-09

之前看到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之后,我们可以再按一个对应的功能键来实现希望的功能。具体就从分屏这个简单的例子说吧,如果我们想在窗口中进行上下分屏,我们就先同时按下快捷键组合ctrlb,然后松开这两个按键,接下来我们按下双引号键"这样屏幕就像下图一样被分成了上下两个部分。

 

现在屏幕被分成了两个部分,我们在这两个部分中分别写代码。需要提示的是,如果我们想从一个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使用和功能的介绍可以参考以下两篇文章:

Linux终端分屏工具tmux快捷键备忘

tmux cheat sheet

 

最后再附上一个所有功能键的示意图:

图片来源(LINK

Leave a Reply

Your email address will not be published. Required fields are marked *