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可以关闭服务器