学习自:https://www.ruanyifeng.com/blog/2019/10/tmux.html
Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。
使用前
场景1
小A:在使用Linux服务器时,经常会碰到一种情况,运行的程序需要运行几十分钟甚至几个小时,启动运行之后,因为某种原因我们可能会断开ssh,再打开这个窗口发现因为ssh断开,程序已经终止运行,又需要重新启动程序重新执行,非常崩溃
场景2
小B:在同一台机器上同时监控N个程序的运行状态,于是需要开N个终端,每个终端监控一个程序输出(或者一个串口的输出),来回切换非常崩溃
场景3
小C:我跟小D共同使用一台机器,但是他用完串口总是不释放,导致我每次链接串口时都遇到串口被占用的情况,小D总是占着xx不xx
小D:我又不是故意的,有的时候调试完没有关闭串口就去忙其他事情,所以就没释放。
使用后
场景1
针对小A的情况,我们需要一种将运行程序从当前session中detach的工具,一般可能采用nohup xxx & 后台运行的方式,但是这样命令敲起来很麻烦,而且一般必须通过将输出写到文件才能保留住过程,所以这时候就可以通过tmux来解决:
- 在tmux中创建的子终端,只要保持当前tmux本身的session不退出,就不会随着用户的断网或离开而断开;
- 从tmux中detach后,其中运行的程序依然在后台保持运行,并且随时可以重新attach-session回到tmux管理的子终端;
场景2
针对小B的情况,我们需要一个窗口管理器,可以方便的命名以及切换窗口,可以通过tmux来解决:
- tmux支持在同一个session中创建多个子终端,并且都可以单独命名,并且可以通过快捷键在终端间迅速切换
- 它还支持窗口任意的垂直和水平拆分
场景3
小C小D的吐槽,简单来说,需要一个可以多人共享复用的终端,占用同一个资源,可以通过tmux解决:
- tmux允许每个会话有多个连接窗口,因此可以多人实时共享会话;
- 共享会话时,每个连接窗口的输出是同步的,可以共享查看他人的操作
用法
安装
ubuntu:
sudo apt-get install tmux
启动与退出
安装完成后,键入tmux命令,就进入了 Tmux 窗口。
上面命令会启动 Tmux 窗口,底部有一个状态栏。状态栏的左侧是窗口信息(编号和名称),右侧是系统信息。
前缀键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。举例来说,帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。然后,按下 ESC 键或q键,就可以退出帮助。
最简流程
以下是 Tmux 的最简操作流程。
- 执行 tmux 新建会话
- 在tmux窗口中运行需要运行的程序
- 按下 ctrl + b 然后按下 d 从tmux脱离
- 下次使用时,通过 tmux a 或 tmux attach-session -t 0 重新连接到tmux会话
常用快捷键
Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。
Ctrl+b w:从列表中选择窗口。
Ctrl+b ,:窗口重命名。