Tmux

介绍

tmux 是一个终端复用软件。相比其他终端复用软件, tmux 除了提供在一个命令行终端同时访问多个命令行会话的分屏功能以外。它还提供了其他一些实用的功能。

  • 会话的存储以及恢复功能:有时我们会需要 SSH 远程登录到 Linux 服务器并且运行一些需要长时间执行的任务,比如:系统备份,数据传输等。 tmux 可以存储我们的会话,即使我们执行这些任务时断开 SSH 连接或者关掉我们的终端,会话在之后还是可以恢复。这个功能有点类似 nohup 和 setsid 命令。
  • 会话的共享功能:我们可以将 tmux 会话分享给他人,当其他人通过 SSH 加入这个会话的时候,他们可以看到其他人在这个会话的操作,就像觉得这个会话就是运行在本地一样。

安装

我们可以通过 Linux 发行版的软件包管理器安装。例如:

Ubuntu 使用如下命令:

sudo apt install tmux

Arch Linux 使用如下命令:

sudo pacman -S tmux

Centos 使用如下命令:

sudo yum install tmux

如何获得帮助

tmux 的帮助文档十分详尽。我们可以使用以下命令获得帮助:

man tmux

基本使用方法

tmux 的基本概念

tmux 由 Session (会话), Window (窗口), Pane (窗格) 这三个元素组成。

  • Session: 一个服务器可以包含多个会话。一个 Session 可以是一个任务所用到的窗口的集合。
  • Window: 一个会话可以包含多个窗口。每个 Window 又可以分为多个窗格。
  • Pane: 窗格实现分屏的功能。它是每个窗口通过划分出来的多个小窗口。

tmux 命令的基本使用

新建会话:

tmux [new -s 会话名]

列出所有会话:

tmux ls

关闭会话:

tmux kill-session -t 会话名

加入/恢复会话:

tmux a [-t 会话名]

其中 a 可以换成 at 或者 attach

tmux 常用快捷键

为了防止快捷键的冲突, tmux 提供了一个快捷键前缀。在每次使用 tmux 的快捷键的时候,需要先按下快捷键前缀,然后再按下对应的快捷键。快捷键前缀默认是组合键 ctrl+b

如果觉得默认的快捷键前缀很难按,可以通过修改配置文件来改变快捷键前缀。修改 ~/.tmux 文件的内容,在文件中追加:

unbind-key C-b
set -g prefix C-a
bind C-a send-prefix

重新登陆后生效

以下快捷键都是在 tmux 中,按下快捷键前缀后所按的快捷键。

会话操作

  • d: 暂时离开当前会话,可以通过 tmux a 来恢复会话 。( detach )
  • s: 查看/切换会话。( switch )
  • $: 重命名当前会话。

窗口操作

  • c: 在当前会话新建一个窗口。( create )
  • w: 列出当前会话所有窗口。( watch )
  • n: 切换到当前会话的下一个窗口。( next )
  • p: 切换到当前会话的前一个窗口。( previous )
  • : 重命名当前窗口。
  • f: 通过名字查找窗口并切换。( find )
  • 窗口号: 通过窗口号切换窗口。
  • &: 关闭当前窗口。

窗格操作

  • %: 在当前窗口水平拆分出一个新窗格。
  • ": 在当前窗口垂直拆分出一个新窗格。
  • !: 将当前窗格置于新的窗口。即新建一个窗口,其中仅包含当前窗格。
  • o: 在窗格之间切换。
  • 方向键: 按照方向键的方向切换到目标窗格。
  • {: 当前窗格与上一个窗格交换位置。
  • }: 当前窗格与下一个窗格交换位置。
  • alt+方向键: 按照方向键方向调整当前窗格大小。
  • q: 显示所有窗格的编号,当数字出现时按哪个数字就切换到那个编号的窗格。
  • z: 最大化当前窗格,再按一次这个快捷键讲还原。
  • alt+o: 逆时针旋转交换当前窗口的所有窗格的位置。
  • ctrl+o: 顺时针旋转交换当前窗口的所有窗格的位置。
  • x: 关闭当前窗格。