Tmux解决痛点
后台程序挂起。在使用
Flask、FastAPI或Gradio启动某些服务或API时,往往会将当前会话变成服务监控状态,如果会话关闭会导致服务也随之关闭。有的人可能会说,可以使用
nohup将服务在后台执行,单是这样会生成额外的nohup.out文件,并且无法实时观看服务运行状态。多个窗口之间来回切换。在
Linux操作系统的使用过程中,可能会出现开启多个窗口的情况,随着窗口的逐步开启,自己都会忘记每个窗口有什么用,能不能关闭,管理起来非常麻烦。终端工作环境可以实时保留,并且不会因会话关闭导致工作环境丢失。并且在不同设备上可以共享工作环境,不在拘泥于设备。
如果你也有以上烦恼,那么不妨试试Tmux这款工具。
Tmux基本概念
Tmux是一个终端复用工具,有了它,您可以在终端工具中创建多个工作会话,可以临时关闭终端而会话仍然会在后台继续保持运行。以后可以恢复这些会话以继续你中断的工作——上次在会话中执行的程序、输出在窗口中的内容都会保持原样,就像您的工作没有中断过一样。

一个Tmux的会话中可以有多个窗口,每个窗口又可以分割成多个窗格。 我们与shell交互的地方是窗格。
默认情况下在一个窗口中,只有一个大窗格,占满整个窗口区域。我们在这个区域工作。
Tmux安装
Ubuntu安装
1 | sudo apt install tmux |
CentOS安装
1 | sudo yum install tmux |
MacOS安装
1 | brew install tmux |
Tmux基本使用
配置项
打开配置文件~/.tmux.conf(如果没有就手动创建),添加配置:
1 | set -g mouse on |
mouse on:用鼠标自由调整窗格大小,还可以通过右键实现一些基本操作。default-terminal: 设置默认终端模式为256co1or。history-limit:设置回滚缓冲区大小为20000行。
快速使用
直接使用以下步骤您可以简单的使用Tmux,包括:
创建会话,使用以下命令快速创建一个名为
test的会话。1
2# tmux new -s <name>
tmux new -s test
直接输入
tmux也可以进入Tmux会话,但是此时的会话名称是自动编号的(从0开始的连续整数)。执行命令/工作,例如:我们执行一个文件编辑命令。

新建窗口,接下来,在该窗口下再新建一个窗口。依次输入
Ctrl+b->c即可创建完成。
分离会话,输入
tmux detach,即可完成窗口分离。1
tmux detach
此时,会退出
Tmux窗口,并回到初始会话。
查看当前所有的
Tmux窗口。1
tmux ls

可以看到我们有一个
test会话,并且在该test会话中有2个窗口。恢复会话,输入以下代码退出会话。
tmux at [-t session_name]:使用-t参数可以指定恢复的窗口名称;如果不指定会话名称,默认恢复的是最后一个窗口。1
2# tmux at -t test
tmux at
切换窗口,此时的窗口是我们前面创建的第二个窗口,那么,如何回复到我们使用
vim编辑的窗口呢?依次按:
Ctrl+b->0,即可切换完成。其中0表示的是,窗口编号,在下方绿色区域中会对每个窗口进行自动编号。


关闭会话,当会话使用完毕后,肯定是需要销毁的,不然会一直在后台占用资源。
使用以下代码即可删除会话:
tmux kill-session -t session_name例如关闭后台的
test会话。1
tmux kill-session -t test

关闭成功。
关闭所有会话
1
tmux kill-server
更多快捷键
进入tmux会话后,大部分的tmux会话、窗口、空格相关操作都可以用快捷键完成。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。
例如,帮助命令的快捷键是Ctrl+b->?。它的用法是,在Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。然后,按下 ESC键或q键,就可以退出帮助。
再如,若你想分离会话(对应命令tmux detach),那你就先按下Ctrl+b,再按下d,就会断开当前会话。
Ctrl+b这个前缀键也可以配置,例如,在~/.tmux.conf中添加一行set -g prefix C-x,就能将前缀键改为Ctrl+x。
会话操作
:new<回车>启动新会话s列出所有会话$重命名会话d断开当前会话D选择要断开的会话ctrl+z挂起当前会话r重载当前会话:进入命令行模式,可以用ls等命令
窗口(window)操作
Tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉tmux的窗口操作:
c新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态p切换至上一窗口n切换至下一窗口w窗口列表选择,注意macOS下使用⌃p和⌃n进行上下选择&关闭当前窗口,重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id0切换至 0 号窗口,使用其他数字 id 切换至对应窗口f根据窗口名搜索选择窗口,可模糊匹配
窗格(Pane)操作
%左右平分出两个窗格"上下平分出两个窗格x关闭当前窗格{当前窗格前移}当前窗格后移;选择上次使用的窗格o选择下一个窗格,也可以使用上下左右方向键来选择,比如切换到下方窗格,就按方向键↓。!将当前窗格拆分为一个独立窗口。space切换窗格布局,tmux 内置了五种窗格布局,也可以通过⌥1至⌥5来切换z最大化当前窗格,再次执行可恢复原来大小q显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格Ctrl+方向键以1个单元格为单位移动边缘以调整当前面板大小
其他操作
?列出所有快捷键;按q返回:进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器