跳到主要内容

Tmux---Linux终端复用器

· 阅读需 9 分钟
Too_Young
Moonlit maintanier

bk


在我们通过SSH远程到服务器上时候,可能会遇到正在运行命令,但是连接突然中断了,或者因为某些原因我们必须断开连接。但是我们想要命令在断开连接之后还能继续运行,并且在我们恢复连接之后还可以继续查看运行的输出,这个时候我们就可以通过终端复用器 --- tmux来实现。


基本概念

  • Session:一个 tmux 实例,承载所有内容

  • Window:类似浏览器 Tab

  • Pane:窗口内的分屏

SSH的断开和恢复都是通过Session来实现的,每个Session可以包含多个Window,每个Window中可以通过多个Pane来实现分屏。


安装tmux

Debian / Ubuntu 系列

sudo apt update
sudo apt install -y tmux

CentOS 7 / Rocky 8+

sudo yum install -y tmux

或在新系统上:

sudo dnf install -y tmux

SUSE / openSUSE 系列

sudo zypper install tmux
备注

有些SUSE12没有无法安装tmux,可以使用 Screen来平替。也可以尝试通过源代码安装的方式来安装

Alpine Linux(容器环境常见)

apk add tmux

Arch Linux

sudo pacman -S tmux

验证tmux

tmux -V

基本操作

tmux在Seesion几乎所有操作 都通过一个前缀键触发。

  • 默认前缀键:Ctrl+b

按法如下:

Ctrl+b → 松手 → 再按一个键


Session

创建Session

所有的操作都是在 Session 中进行的,所以我们需要先创建一个 Session

tmux new -S <name>

创建一个带名字的Session

提示

这里强烈推荐使用 -S 来创建一个带有名字的的Session方便我们管理. 如果不想要指定名字,直接运行不带参数的命令即可

tmux

列出所有Session

查看当前存活的所有Session

tmux ls

重连Session

重新(恢复)连接到Session

tmux attach -t <name>
提示

如果只有一个Session, 可以简写:

tmux attach

离开Session(灵魂操作)

因为是在Session中,所以操作需要用到前缀键

Ctrl+b, d

这个操作不会关闭(中断)Session, 这样在需要关闭SSH连接的时候,我们可通过这个操作来离开Session

关闭Session

当所有Window都关闭了,Session自动关闭


Window

在我们进入 Session 后会默认有一个 编号为 0window。让我们来看看该如何操作 Windwo

创建Window

Ctrl+b c

创建的 Window 编号会递增。

提示

如果你有3个Window,编号为 0,1,2。 当你关闭1号的时候,2号还是保持2号编号不变。这时你再创建新的窗口会使用1号编号。

切换Window

  • 下一个:Ctrl+b n

  • 上一个:Ctrl+b p

  • 指定编号:Ctrl+b 0Ctrl+b 9

提示

Window上限不是9,只是超过9之后的Window就不能通过Ctrl+b 序号 来切换了。

列出Window

Window 太多的时候通过切换操作可能无法快速定位,这时可以在列表中快速定位。

重命名Window

Ctrl+b ,

Window起一个有意义的名字,在使用的时候更容易分辨

提示

window默认的命名,没有命令在运行的时候使用bash名字,例如 Bash,zsh,fish。 如果有命令正在运行,会显示运行的命令。

关闭Window

exit

退出就会关闭当前Window


Pane

Pane可以将窗口分割为多块,可以垂直分割和水平分割。通过不断地分割,可以实现多种布局

提示

Pane的分割操作实际是对Pane进行操作,每个Window默认有一个Pane

垂直分割

Ctrl+b %

这个操作会将当前Pane分割为左右2个

水平分割

Ctrl+b "

这个操作会将当前Pane分割为上下2个

关闭当前Pane

Ctrl+b x

关闭的时候tmux会提示你是否要关闭

自动布局调整

Ctrl+b Space

不想要精雕细琢的设置布局的时候,可以用自动布局来节省脑力

提示

Space是空格键。 反复按,会在tmux内置的5种布局之间切换

  1. 平铺: 将Pane平铺,通过数量计算每行放下的Pane的数量,多余的放在最后一行,最后一个Pane会占据剩下的的所有位置
  2. 垂直平均: 将所有Pane从左到右排列,每个Pane大小一样
  3. 水平平均: 将所有Pane从上到下排列,每个Pane大小一样
  4. 主窗格在上: 一个Pane在上方,其他Pane在下方横向排列。主窗格占据更多的高度
  5. 主窗格在左: 一个Pane在左边,其他Pane在右边纵向排列。主窗格占据更多的宽度

复制模式(查看历史输出)

tmux默认不支持鼠标滚轮来上下滚动,需要查看历史输出需要进入复制模式

Ctrl+b [

进入复制模式后可以通过 方向键 / Page Up / Page Down 来上下滚动

通过 q 退出


杀掉Session(慎用)

tmux kill-session -t <name>

不推荐这样结束Session,杀掉Session之后无法恢复,请谨慎操作。如果需要关闭Session,可以将Window全部关闭,当Window都关闭了,Session会自动退出。

tmux 的基本操作到这里我们就都掌握了,祝大家使用愉快~

Happy hacking!!!

:::tip 一言 滟滟随波千万里,何处春江无月明! --- 《春江花月夜》 · 唐代 张若虚 :::

Details

全文 春江潮水连海平,海上明月共潮生。
滟滟随波千万里,何处春江无月明!
江流宛转绕芳甸,月照花林皆似霰。
空里流霜不觉飞,汀上白沙看不见。
江天一色无纤尘,皎皎空中孤月轮。
江畔何人初见月,江月何年初照人?
人生代代无穷已,江月年年只相似。
不知江月待何人,但见长江送流水。
白云一片去悠悠,青枫浦上不胜愁。
谁家今夜扁舟子,何处相思明月楼?
可怜楼上月徘徊,应照离人妆镜台。
玉户帘中卷不去,捣衣砧上拂还来。
此时相望不相闻,愿逐月华流照君。
鸿雁长飞光不度,鱼龙潜跃水成文。
昨夜闲潭梦落花,可怜春半不还家。
江水流春去欲尽,江潭落月复西斜。
斜月沉沉藏海雾,碣石潇湘无限路。
不知乘月几人归,落月摇情满江树。

到底啦,点个赞吧 👍 或者留下神秘的评论 💬,让我知道你来过!
Loading Comments...