用tmate分享Linux终端实现共享会话的方法

463 阅读2分钟

Tmate扩大了你在Linux终端上共享会话的选择。

Terminal command prompt on orange background

图片由: iradaturrahmat viaPixabay, CC0

作为Fedora Linux QA团队的一员,我有时会发现自己执行了一堆我想广播给其他开发者的命令。如果你曾经使用过像tmuxGNU Screen这样的终端复用器,你可能会认为这是一个相对容易的任务。但是,并不是所有我想看到我的演示的人都是从笔记本电脑或桌面上连接到我的终端会话的。有些人可能是随便从他们的手机浏览器上打开的--他们可以很容易地做到这一点,因为我用的是tmate

用tmate共享Linux终端

看别人在Linux终端工作是非常有教育意义的。你可以学到新的命令,新的工作流程,或者新的调试和自动化方法。但要捕捉到你所看到的东西,以便你以后可以自己尝试,这可能很困难。你可能会诉诸于截图或共享终端会话的屏幕记录,这样你就可以在以后打出每个命令。唯一的其他选择是由演示命令的人使用Asciinemascript和scriptreplay等工具来记录会话。

但是有了tmate,用户可以在只读模式或通过SSH共享一个终端。SSH和只读的会话都可以通过终端或以HTML网页的形式访问。

当我为Fedora QA团队的人进行入职培训时,我使用只读模式,因为我需要运行命令并显示输出结果,但有了tmate,人们可以通过从浏览器复制和粘贴到文本编辑器来保持笔记。

正在运行的Linux tmate

在Linux上,你可以用你的软件包管理器安装tmate。例如,在Fedora上。

$ sudo dnf install tmate

在Debian和类似的发行版上。

$ sudo apt install tmate

在macOS上,你可以用HomebrewMacPorts安装它。如果你需要其他Linux发行版的说明,请参考安装指南。

Screenshot of terminal showing the options for tmate sharing: web session (regular and read-only) and ssh session (regular and read-only)

图片由: (Sumantro Mukherjee, CC BY-SA 4.0)

安装完毕后,启动tmate。

$ tmate

当tmate启动时,会产生链接,通过HTTP和SSH提供对你终端会话的访问。每个协议都有一个只读选项,以及一个反向的SSH会话。

下面是一个网络会话的样子。

Screenshot showing tmate terminal window and 2 versions of sharing sessions demonstrating the same code

图片由: (Sumantro Mukherjee, CC BY-SA 4.0)

Tmate的网络控制台是HTML5的,因此,用户可以复制整个屏幕并将其粘贴到终端,以运行相同的命令。

保持一个会话的活力

你可能想知道如果你不小心关闭了你的终端会发生什么。你也可能想知道与不同的控制台应用程序共享你的终端。毕竟,tmate是一个多路复用器,所以它应该能够保持会话的活力,脱离和重新连接到一个会话,等等。

当然,这正是tmate所能做到的。如果你曾经使用过tmux,这可能是非常熟悉的。

$ tmate -F -n web new-session vi console

这个命令在Vi中打开new-session-F选项确保会话在关闭时也能重新出现。

A screenshot of the terminal showing the output after using the new-session and -F options: connection information for either a web session (regular or read-only) or ssh session (regular or read-only)

图片来源: (Sumantro Mukherjee, CC BY-SA 4.0)

社交复用

Tmate为你提供了tmux或GNU Screen的自由,以及与他人共享会话的能力。它是一个有价值的工具,可以教其他用户如何使用终端,演示一个新命令的功能,或调试意外行为。它是开源的,所以请试一试吧!