什么是Linux上的TTY?(以及如何使用tty命令)

tty命令做什么?它会打印您正在使用的终端的名称。TTY代表“电传打字机”。司令部名称背后的故事是什么?这需要更多的解释。

19世纪的电传打字机

在19世纪30年代和40年代,被称为电传打字机的机器被开发出来。这些机器可以将打字信息“顺着线路”发送到遥远的地方。这些信息是由发送者在某种键盘上键入的。它们是在接收端印在纸上的。它们是电信业的一个进化步骤,此前电信业一直依赖于摩尔斯电码和类似的代码。

消息被编码和发送,然后被接收、解码和打印。有几种技术用于对消息进行编码和解码。最著名、也是最多产的波特率是1874年由埃米尔·博多(ÉmilBaudot)申请专利的,波特率就是以他的名字命名的。他的字符编码方案比ASCII早89年。

Baudot的编码最终成为电传打字机编码中最接近标准的东西,并被大多数制造商采用。Baudot最初的硬件设计只有五个键,类似于钢琴键。操作员被要求学习每个字母的特定键组合。最终,Baudot编码系统与传统的键盘布局相结合。

为了纪念这一进步,这些机器被命名为电传打字机。这被缩短为电传打字机,并最终被缩短为TTY。这就是我们缩写“TTY”的由来,但是电报和计算有什么关系呢?

ASCII和电传

1963年ASCII问世时,电传打字机制造商采用了ASCII。尽管有了电话的发明和广泛使用,电传打字机仍然很畅销。

电传是一个世界性的电传网络,它允许书面信息在全球范围内发送。在第二次世界大战后到20世纪80年代传真机繁荣期间,传真机是传递书面信息的主要手段。

计算机也在进化。它们变得能够与用户实时交互,并支持多个用户。旧的批量作业法已经不够用了。人们不想等待24小时或更长时间的结果。制作成堆的穿孔卡片并通宵等待结果不再是可以接受的。

人们需要一种能让他们输入指令并将结果发回给他们的设备。人们想要的是效率。

重新调整用途的电传打字机

电传打字机是输入/输出设备的完美候选者,毕竟,它是一种允许信息被打字、编码、发送、接收、解码和打印的设备。

如果连接另一端的设备不是另一台电传打字机,电传打字机又有什么关系呢?只要电传打字机说的是同一种编码语言,并且可以接收信息和回发信息,电传打字机就很开心。

当然,它使用了或多或少的标准键盘。

硬件仿真电传打字

电传打字机成为与那个时代的大型、小型和大型计算机进行交互的默认方式。

它们最终被用电子学模拟那些机电机器的设备所取代。它们用阴极射线管(CRT)代替纸卷。当他们从电脑上发出回应时,他们没有摇晃。它们允许迄今不可能实现的功能,例如在屏幕上移动光标、清除屏幕、加粗文本等。

DEC VT05是虚拟电传打字机的早期例子,也是著名的DEC VT100的祖先。DEC VT100售出了数百万台。

软件仿真电传打字

在Linux和其他类似Unix的操作系统(如MacOS)的桌面环境中,终端窗口和应用程序(如x-Term和Konsole)是虚拟电传打字机的示例。但这些都是完全在软件中仿真的。它们被称为伪电传打字机。这被缩短为PTS。

这就是tty的用武之地。

塔蒂能告诉我们什么?

在Linux中,有一个伪电传多路复用器,它处理来自所有终端窗口伪电传(PTS)的连接。多路复用器是主站,PTS是从站。多路复用器由内核通过位于/dev/ptmx的设备文件寻址。

tty命令将打印伪电录从机用来与主机连接的设备文件的名称。实际上,这就是您的终端窗口的编号。

让我们看看tty为我们的终端窗口报告了什么:

tty

响应显示我们已连接到/dev/pts/0处的设备文件。

我们的终端窗口是电传打字机(TTY)的软件仿真,它作为伪电传打字(PTS)与伪电传多路复用器接口。而它恰好是零号。

静默选项

s(静默)选项导致tty不生成任何输出。

tty -s

然而,它确实会产生退出价值:

0:如果标准输入来自TTY设备(仿真或物理)。 1:如果标准输入不是来自TTY设备。 2:语法错误,使用的命令行参数不正确。 3:发生写入错误。

这在Bash脚本编写中可能最有用。但是,即使在命令行上,我们也可以演示只有在终端窗口(TTY或PTS会话)中运行时才能执行命令。

tty -s && echo "In a tty"

因为我们在TTY会话中运行,所以退出代码为0,并执行第二个命令。

“谁”命令

其他命令可以显示您的TTY号码。who命令将列出所有登录用户的信息,包括您自己。

亚历克和玛丽远程连接到Linux计算机。它们连接到PTS一号和二号。

用户Dave显示为已连接到“:0”。

这代表与计算机物理连接的屏幕和键盘。“即使屏幕和键盘是硬件设备,它们仍然通过设备文件连接到多路复用器。TTY显示它是/dev/pts/2。

whotty

相关:如何在Linux中确定当前用户帐户

访问TTY

您可以通过按住Ctrl+Alt键,然后按其中一个功能键来访问全屏TTY会话。

Ctrl+Alt+F3将弹出tty3的登录提示。

如果您登录并发出tty命令,您将看到您已连接到/dev/tty3。

这不是伪电传(在软件中模拟);它是虚拟电传(在硬件中模拟)。它使用连接到您的计算机的屏幕和键盘来模拟虚拟电传打字,就像DEC VT100过去所做的那样。

您可以将功能键Ctrl+Alt与功能键F3至F6配合使用,如果您愿意,可以打开四个TTY会话。例如,您可以登录到tty3,然后按Ctrl+Alt+F6转到tty6。

要返回到图形桌面环境,请按Ctrl+Alt+F2。

按Ctrl+Alt+F1将返回图形桌面会话的登录提示。

一度,按Ctrl+Alt+F1到Ctrl+Alt+F6会打开全屏TTY控制台,而Ctrl+Alt+F7会让您返回到图形桌面环境。如果您运行的是较旧的Linux发行版,这可能就是您的系统的行为方式。

这在当前版本的Manjaro、Ubuntu和Fedora上进行了测试,它们的行为都是这样的:

Ctrl+Alt+F1:返回图形桌面环境登录屏幕。 Ctrl+Alt+F2:返回图形桌面环境。 Ctrl+Alt+F3:打开TTY 3。 Ctrl+Alt+F4:打开TTY 4。 Ctrl+Alt+F5:打开TTY 5。 Ctrl+Alt+F6:打开TTY 6。

通过访问这些全屏控制台,使用仅限命令行安装的Linux的用户-许多Linux服务器都是这样配置的-可以使用多个控制台。

是否曾在具有图形桌面环境的Linux计算机上工作过,是否有什么原因导致您的会话冻结?现在您可以跳转到其中一个TTY控制台会话,这样您就可以尝试纠正这种情况。

您可以使用top和ps来尝试识别失败的应用程序,然后使用kill来终止它,或者只使用shutdown来尝试尽可能优雅地关闭计算机的状态。

相关:如何从Linux终端终止进程

三封历史渊博的小书信

tty命令的名字来源于19世纪末的一种设备,1971年出现在Unix中,至今仍是Linux和类Unix操作系统的一部分。

这小家伙背后有一段相当不错的故事。