0%

终端管理神器Tmux

Tmux解决痛点

  1. 后台程序挂起。在使用FlaskFastAPIGradio启动某些服务或API时,往往会将当前会话变成服务监控状态,如果会话关闭会导致服务也随之关闭。

    有的人可能会说,可以使用nohup将服务在后台执行,单是这样会生成额外的nohup.out文件,并且无法实时观看服务运行状态。

  2. 多个窗口之间来回切换。在Linux操作系统的使用过程中,可能会出现开启多个窗口的情况,随着窗口的逐步开启,自己都会忘记每个窗口有什么用,能不能关闭,管理起来非常麻烦。

  3. 终端工作环境可以实时保留,并且不会因会话关闭导致工作环境丢失。并且在不同设备上可以共享工作环境,不在拘泥于设备。

如果你也有以上烦恼,那么不妨试试Tmux这款工具。

Tmux基本概念

Tmux是一个终端复用工具,有了它,您可以在终端工具中创建多个工作会话,可以临时关闭终端而会话仍然会在后台继续保持运行。以后可以恢复这些会话以继续你中断的工作——上次在会话中执行的程序、输出在窗口中的内容都会保持原样,就像您的工作没有中断过一样。

img

一个Tmux的会话中可以有多个窗口,每个窗口又可以分割成多个窗格。 我们与shell交互的地方是窗格。

默认情况下在一个窗口中,只有一个大窗格,占满整个窗口区域。我们在这个区域工作。

Tmux安装

Ubuntu安装

1
sudo apt install tmux

CentOS安装

1
sudo yum install tmux

MacOS安装

1
brew install tmux

Tmux基本使用

配置项

打开配置文件~/.tmux.conf(如果没有就手动创建),添加配置:

1
2
3
set -g mouse on
set -g default-terminal "screen-256color"
set -g history-limit 20000
  • mouse on:用鼠标自由调整窗格大小,还可以通过右键实现一些基本操作。
  • default-terminal: 设置默认终端模式为256co1or
  • history-limit:设置回滚缓冲区大小为20000行。

快速使用

直接使用以下步骤您可以简单的使用Tmux,包括:

  1. 创建会话,使用以下命令快速创建一个名为test的会话。

    1
    2
    # tmux new -s <name>
    tmux new -s test

    image-20240621111454896

    直接输入tmux也可以进入Tmux会话,但是此时的会话名称是自动编号的(从0开始的连续整数)。

  2. 执行命令/工作,例如:我们执行一个文件编辑命令。

    image-20240621152506424

  3. 新建窗口,接下来,在该窗口下再新建一个窗口。依次输入Ctrl+b->c即可创建完成。

    image-20240621152642452

  4. 分离会话,输入tmux detach,即可完成窗口分离。

    1
    tmux detach

    此时,会退出Tmux窗口,并回到初始会话。

    image-20240621152854305

  5. 查看当前所有的Tmux窗口。

    1
    tmux ls

    image-20240621152933503

    可以看到我们有一个test会话,并且在该test会话中有2个窗口。

  6. 恢复会话,输入以下代码退出会话。

    tmux at [-t session_name]:使用-t参数可以指定恢复的窗口名称;如果不指定会话名称,默认恢复的是最后一个窗口。

    1
    2
    # tmux at -t test
    tmux at

    image-20240621153206065

  7. 切换窗口,此时的窗口是我们前面创建的第二个窗口,那么,如何回复到我们使用vim编辑的窗口呢?

    依次按:Ctrl+b->0,即可切换完成。

    其中0表示的是,窗口编号,在下方绿色区域中会对每个窗口进行自动编号。

    image-20240621153357550

    image-20240621153413002

  8. 关闭会话,当会话使用完毕后,肯定是需要销毁的,不然会一直在后台占用资源。

    使用以下代码即可删除会话:tmux kill-session -t session_name

    例如关闭后台的test会话。

    1
    tmux kill-session -t test

    image-20240621153746147

    关闭成功。

    关闭所有会话

    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 状态栏更快速的识别窗口 id
  • 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
  • f 根据窗口名搜索选择窗口,可模糊匹配

窗格(Pane)操作

  • % 左右平分出两个窗格
  • " 上下平分出两个窗格
  • x 关闭当前窗格
  • { 当前窗格前移
  • } 当前窗格后移
  • ; 选择上次使用的窗格
  • o 选择下一个窗格,也可以使用上下左右方向键来选择,比如切换到下方窗格,就按方向键
  • ! 将当前窗格拆分为一个独立窗口。
  • space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1⌥5来切换
  • z 最大化当前窗格,再次执行可恢复原来大小
  • q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
  • Ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小

其他操作

  • ? 列出所有快捷键;按q返回
  • : 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
-------------本文结束感谢您的阅读-------------