Linux——tmux工具使用说明


整体说明

  • tmux(Terminal Multiplexer 的缩写)是 Linux/Unix 系统的一款优秀的终端复用工具 (一般 Linux 系统默认自带,无需封装),也是 GNU Screen 的升级版,功能更强大、设计更优雅
  • tmux 的核心作用包括:
    • 1)借助 tmux,在远程连接服务器时,即使 断开 SSH 连接、终端关闭、网络中断 ,tmux 里运行的程序也不会停止,重新连接后可无缝恢复会话继续操作
    • 2)一个终端窗口中,创建 多个会话、多个窗口、多个分屏面板 ,无需开多个终端窗口,高效管理多个任务
    • 3)支持会话分离/接入、窗口切换、面板缩放、快捷键操作等,是后端开发/运维必备工具

安装 tmux

  • 几乎所有 Linux 发行版都能通过包管理器一键安装,系统默认一般不带,执行对应命令即可

  • CentOS / RHEL / Fedora (yum/dnf)

    1
    2
    yum install -y tmux  # CentOS7
    dnf install -y tmux # CentOS8+/Fedora
  • Ubuntu / Debian / Deepin (apt)

    1
    apt update && apt install -y tmux
  • MacOS (brew)

    1
    brew install tmux
  • 安装完成后,终端输入 tmux -V 验证版本,显示版本号即安装成功


tmux 核心概念

  • tmux 的结构是 会话 > 窗口 > 面板 三层嵌套,从大到小 包含关系

会话 (Session)

  • 最顶层的独立运行环境,一个 tmux 可以创建多个相互独立的会话
  • 每个会话有唯一的「会话名」或「会话ID」,可以随时分离(detach)接入(attach)
  • 分离会话:会话在后台继续运行,当前终端退出 tmux 界面
  • 接入会话:重新进入之前分离的会话,恢复所有操作界面,程序正常运行

窗口 (Window)

  • 一个会话里可以创建多个 窗口 ,默认占满整个屏幕,窗口之间可以快速切换
  • 类似浏览器的 标签页,比如:一个窗口跑项目日志、一个窗口执行代码部署、一个窗口做文件编辑

面板 (Pane)

  • 一个窗口里可以分割成多个 面板(分屏),所有面板在同一个窗口中显示,共享当前会话环境
  • 类似终端的「分屏功能」,比如:左边面板编辑代码、右边面板实时运行程序,上下面板分别查看日志和执行命令

tmux 通用操作规则

  • tmux 所有的功能操作,都依赖 前缀键+ 功能键 的组合方式,这是 tmux 的核心操作逻辑:

前缀键 (Prefix Key)

  • 默认的前缀键是: Ctrl + b (先按住 Ctrlb 一起松开,再按后面的功能键)

tmux 命令两种执行方式

  • 快捷键方式前缀键 + 功能键,效率最高,日常使用99%的场景都用这个;
  • 命令行方式 :在 tmux 终端中输入 tmux 命令参数,适合会话管理(创建/接入/删除)等场景

基础核心操作

  • 会话是 tmux 最核心的功能,所有操作都围绕会话展开,以下命令全部在系统原生终端执行(未进入 tmux 时)

  • 创建新会话

    1
    2
    tmux  # 创建无名称会话,默认会话ID从0开始
    tmux new -s 会话名 # 推荐!创建指定名称的会话,比如 tmux new -s project
  • 分离当前会话(核心!不会停止程序)

    • 方式一:进入 tmux 会话后,执行快捷键:Ctrl+b d(放开 CTRL+b 后再按 d)
    • 方式二:在 tmux 终端输入 tmux detach
    • 方式三:在其他外部终端输入 tmux detach -t 会话名/会话ID
    • 方式四:直接关闭窗口(SSH 或 网页窗口),不建议这种方式,可能存在问题?
    • 注:以上四种方式下,当前终端退出 tmux 界面,回到系统原生终端,tmux 会话在后台继续运行 ,里面的程序不会停止
  • 彻底关闭当前会话:

    1
    2
    exit # 简单命令
    tmux kill-session # 明确关闭当前 session
  • 查看所有后台会话

    1
    tmux ls  # 列出所有会话,格式:会话名: 窗口数 (创建时间) [终端大小]
  • 接入/恢复指定会话(核心)

    1
    2
    tmux a  # 简写,接入最近的一个会话
    tmux a -t 会话名/会话ID # 推荐!精准接入指定会话,比如 tmux a -t project
  • 关闭/杀死指定会话

    1
    2
    tmux kill-session -t 会话名/会话ID  # 比如 tmux kill-session -t project
    tmux kill-server # 慎用!杀死所有 tmux 会话,停止 tmux 服务
  • 重命名当前会话

    • 进入 tmux 会话后,快捷键:Ctrl+b $,然后输入新的会话名即可

窗口管理(待测试)

  • 窗口 = tmux 的 标签页,一个会话可以创建多个窗口,所有操作均在 tmux 会话内执行(快捷键为主)
  • 核心快捷键(均需先按 Ctrl+b 松开,再按对应键):
    • 1)c → 创建一个新的窗口(默认名称为当前路径)
    • 2)w → 弹出窗口列表,按上下键选择,回车切换
    • 3)n → 切换到下一个窗口(按创建顺序)
    • 4)p → 切换到上一个窗口(按创建顺序)
    • 5)数字键 0~9 → 快速切换到指定序号的窗口(窗口默认从0开始编号)
    • 6), → 重命名当前窗口(比如给窗口命名为 log、deploy、edit)
    • 7)& → 关闭当前窗口(会有确认提示,按 y 确认)
  • 注:这里有个 小技巧,tmux 底部状态栏会显示当前会话的所有窗口,* 标记的是当前激活的窗口

面板管理(待测试)

  • 面板 = tmux 的 分屏,一个窗口可以分割成多个面板,所有操作均在 tmux 会话内执行 ,这是 tmux 提升效率的核心功能
  • 核心快捷键(均需先按 Ctrl+b 松开,再按对应键):
  • 面板分割(创建面板)
    • %垂直分割 ,将当前面板分成左右两个面板(最常用)
    • "水平分割 ,将当前面板分成上下两个面板
  • 面板切换(重点)
    • 方向键 ↑ ↓ ← →,切换到对应方向的面板(最直观,推荐)
    • o,按顺序循环切换所有面板
    • ;, 切换到上一次操作的面板
  • 面板调整/操作
    • Ctrl + 方向键 , 调整当前面板的边框大小(按住 Ctrl+b 不放,再按方向键,持续调整)
    • x , 关闭当前面板(光标所在面板,会有确认提示,按 y 确认)
    • z , 面板最大化/还原 :当前面板占满整个窗口,再按一次恢复原大小(看日志/长代码必备)
    • ! , 将当前面板独立成新窗口 :适合需要单独放大某个面板的场景