您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux 中的 TTY 是什么

时间:2020-06-04 10:14:57  来源:  作者:

tty命令是干什么的?它打印出你正在使用的终端名。TTY 代表 “电传打字机(teletypewriter)”。 这个命令名字背后的故事是什么?这需要更多解释。

19世纪的电传打字机

在19世纪30年代至40年代,称为电传打字机的机器被开发出来。这些机器可以将输入的消息通过“线下(down the wire)”传输到遥远的地方。消息是由发送者在各种键盘上输入的。它们在接收端被打印在纸上。它们是电报中的一个进化步骤,在以前是通过摩斯电码和类似的编码进行传输。

消息被编码和传输然后被接收、解码和打印。有数种技术被用于编码和解码消息。其中最著名、最多产的一项专利是1874年由埃米尔·博多(Émile Baudot)获得的,波特率(baud rate)就是以他的名字命名的。他的字符编码方案比ASCII早了89年。

最终,波特的编码成为了在电传打字机编码中最接近标准的编码,他被大多数厂商采纳。波特原始的硬件设计只有5个按键,就像钢琴键一样。操作者被要求为每一个字母学习特殊的按键组合。最终,波特编码系统被结合进了传统的键盘布局。

为了纪念这个进步,这个机器被命名为电传打字机(teletypewriters)。这被缩短为teletypes并且最后称为TTYS。这就是TTY这个首字母缩写的由来,但是电报和计算机有什么关系?

ASCII 和 电报

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

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

计算机也不断发展。他们变得能够与用户实时交互并且能够支持多个用户。老旧的批处理方法变得无法满足需求。人们步希望等待24小时或更久来得到结果。制作一堆打孔卡带然后等上个几夜来获得结果已经无法接收。

人们需要一个设备能够让他们输入指令并且直接返回结果给他们。人们想要效率。

电传打字机的新用途

电传打字机是一个完美的输入/输出设备选择。毕竟他是一种能够打字,编码,发送,接收,解码和打印的设备。

电传打字机关注如果连接在另一端的设备不是另一个电传打字机吗?只要它使用相同的编码语言并且能够接收并发送消息回来电传打字机就很开心。

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

硬件模拟的电传打字机

电传打字机成了那个年代与微型计算机和大型计算机的默认方式。

他们最终被使用电子模拟这些机电器械的设备所取代。这些设备使用阴极射线管(Cathode Ray Tubes (CRTs))而不是卷纸。当计算机传输响应时,他们不会抖动。他们允许使用至今无法实现的功能,例如在屏幕周围移动光标,清空屏幕,加粗字体,以及更多。 [ They were eventually replaced by devices that emulated those electro-mechanical machines using electronics. These had Cathode Ray Tubes (CRTs) instead of paper rolls. They didn’t shake when delivering responses from the computer. They permitted hitherto impossible functionality, such as moving the cursor around the screen, clearing the screen, bolding text, and so on. ]

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

软件模拟的电传打字机

linux 和其他类 Unix 操作系统例如macOS的桌面环境中,终端窗口和例如 x-term 和 Konsole 的应用程序是虚拟电传打字机的样例。但是这些是完全从软件层面实现的他们被称为伪电传打字机(pseudo-teletypes),缩写为 PTS。

这就是 TTY 的由来。

TTY 能告诉我们什么

在 Linux 中有一个伪电传打字机多路复用器(pseudo-teletype multiplexor)来处理来自终端窗口伪电传打字机(PTS)的连接。这个多路复用器是 master,PTS是 slave, 多路复用器由内核通过位于 /dev/ptmx 下的设备文件进行寻址。

tty 命令将打印你的使用了 master 接口的 slave 伪电传打字机的设备文件名称。[The tty command will print the name of the device file that your pseudo-teletype slave is using to interface to the master.] 实际上这就是终端窗口的编号。

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

tty
Linux 中的 TTY 是什么

 

这个响应显示我们连接到了位于 /dev/pts/0 的设备文件。

我们的终端窗口,是电传打字机(TTY)的软件模拟,以伪电传打字机(PTS)的方式连接到伪电传打字机多路复用器。并且编号正好是0。

静默选项

-s (silent) 选项可以让 tty 不产生输入

tty -s
Linux 中的 TTY 是什么

 

它会产生一个退出码,如下:

  • 0: 如果标准输入来自模拟的或物理的 TTY 设备。
  • 1: 如果标准输入不是来自 TTY 设备。
  • 2: 语法错误,使用了错误的命令行参数。
  • 3: 发生了写入错误。

这看上去似乎在 Bash 脚本中最有用。但是即使在命令行,我们可以也演示如何只使用终端窗口(TTY或PTS会话)时执行命令.

tty -s && echo "In a tty"
Linux 中的 TTY 是什么

 

因为我们运行在 TTY 会话中,我们的退出码为0,并且第二条指令已经执行。

Linux 中的 TTY 是什么

 

who 指令

有其他命令可以显示你的 TTY 编号。 who 命令将会列出包含你自己的所有登陆 的用户信息。

Alec 和 Mary 正在远程连接这台 Linux 电脑。 他们连接到了 PTS 1 和 2。

用户 dave 显示正连接到 “:0” 。

这代表了屏幕和键盘物理的连接到了这台电脑。尽管屏幕和键盘是硬件设备,他们依然通过设备文件连接到了多路复用器。 tty 显示这是 /dev/pts/2 。

who

tty
Linux 中的 TTY 是什么

 

访问 TTY

你可以通过按住 Ctrl+Alt 加上一个功能键来访问全屏的 TTY 会话

Ctrl+Alt+F3 将会显示 tty3 的登陆提示。

Linux 中的 TTY 是什么

 

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

这不是伪电传打字机(软件层面模拟);他是一个虚拟电传打字机(硬件层面模拟)。它通过屏幕和键盘连接到你的电脑,并且模拟了一个虚拟电传打字机就像 DEC VT100 所做的一样。

你可以使用功能键 Ctrl+Alt 配合上功能键 F3 至 F6 可以选择4个 TTY 会话。例如你可以登陆进 tty3 并且按下 Ctrl+Alt+F6 来切换到 tty6 。

Linux 中的 TTY 是什么

 

想要回到图形的桌面环境需要按 Ctrl+Alt+F2 。

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

从 Ctrl+Alt+F1 到 Ctrl+Alt+F6 将打开全屏TTY控制台,而 Ctrl+Alt+F7 将使您返回图形桌面环境。如果你使用旧一点的 Linux 发行版,则取决于你系统的行为。

This was tested on current releases of Manjaro, Ubuntu, and Fedora and they all behaved like this:

这已在 Manjaro , Ubuntu 和 Fedora 的当前版本上进行了测试,他们所有的行为如下:

  1. Ctrl+Alt+F1: 返回图形桌面环境的登陆界面。
  2. Ctrl+Alt+F2: 返回图形桌面环境。
  3. Ctrl+Alt+F3: 打开 TTY 3。
  4. Ctrl+Alt+F4: 打开 TTY 4。
  5. Ctrl+Alt+F5: 打开 TTY 5。
  6. Ctrl+Alt+F6: 打开 TTY 6。

通过访问这些全屏控制台,允许仅通过命令行安装的 Linux 的人

并且许多 Linux 服务器通过这种方式配置

能够使用多个控制台。

你曾使用带图形桌面环境的 Linux 机器工作并被一些问题让你的会话冻结吗?现在你可以跳到 TTY 控制台其中一个会话来尝试纠正这些问题。

你可以使用 top 和 ps 来尝试定位出错的应用,然后使用 kill 来终结它,或者使用 shutdown 直接以计算机允许的方式尽可能优雅的关掉计算机。

历史悠久的三封信

tty 命令因为19世纪晚期的设备得名,并在1971年出现于 Unix 上, 并且至今作为 Linux 和类 Unix 操作系统的一部分。

这个小东西的背后有一个传奇。



Tags:Linux TTY   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
tty命令是干什么的?它打印出你正在使用的终端名。TTY 代表 “电传打字机(teletypewriter)”。 这个命令名字背后的故事是什么?这需要更多解释。19世纪的电传打字机在19世纪30...【详细内容】
2020-06-04  Tags: Linux TTY  点击:(140)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(40)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条