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

时间:2020-01-09 10:44:10  来源:igfitidea点击:

tty命令有什么作用?它显示我们正在使用的终端的名称。 TTY代表电传打字机。命令名称背后的故事是什么?这需要更多解释。

1800年代的电传打印机

在1830和1840年代,开发了称为电传打印机的机器。这些机器可以将键入的消息通过电线发送到遥远的位置。邮件由发件人在各种键盘上键入。它们在接收端打印在纸上。它们是电报中的一个进化步骤,以前是依靠Morseand类似的密码进行的。

消息被编码和传输,然后被接收,解码和打印。有几种用于编码和解码消息的技术。最著名,也是最多产的之一,在1874年由milemile Baudot申请了专利,并以其波特率命名。他的字符编码方案比ASCII早89年。

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

为了纪念这一进步,这些机器被称为电传打字机。这被缩短为电传打字机,最终缩短为TTY。这就是我们从中获得首字母缩写TTY的地方,但是电报与计算有什么关系?

ASCII和电传

当ASCII于1963年问世时,它被电传打字机制造商采用。尽管电话的发明和广泛使用,电传打字机仍在发展。

Telex是一个电传打字机的全球网络,可以在全球范围内发送书面消息。在第二次世界大战之后到1980年代传真机热潮期间,它们是传输书面消息的主要手段。

电脑也在不断发展。他们变得能够与用户实时交互,并支持多个用户。旧的批处理方法变得不够用。人们不想等待24小时或者更长时间才能获得结果。堆积成堆的打孔卡并等待一整夜的结果不再被接受。

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

重新设计的电传打字机

电传打字机是输入/输出设备的理想选择,毕竟它是一种设计用于允许对消息进行打字,编码,发送,接收,解码和打印的设备。

如果连接另一端的设备不是另一个电传电报,电传电报关心什么?只要电传使用相同的编码语言并且可以接收和发送回消息,电传打字机就很高兴。

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

硬件模拟电传打字机

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

最终,它们被使用电子设备模拟那些机电设备的设备所取代。这些具有阴极射线管(CRT)而不是纸卷。从计算机传递响应时,他们没有动摇。他们允许使用迄今为止无法实现的功能,例如在屏幕上移动光标,清除屏幕,加粗文本等。

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

软件模拟电传打字机

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

这就是tty进入的地方。

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"命令将列出所有登录用户(包括我们自己)的信息。

Alec和Mary远程连接到Linux计算机。它们连接到PTS一和二。

用户戴夫显示为已连接到:0。

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

who
tty

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

访问TTY

我们可以通过按住Ctrl + Alt键并按功能键之一来访问全屏TTY会话。

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

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

这不是伪teletype(在软件中模拟);它是虚拟电传打字机(在硬件中模拟)。它使用连接到计算机的屏幕和键盘来模拟虚拟电传打字机,例如用于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"来尝试尽可能地关闭计算机的状态。