首页 > 系统相关 >什么是 Linux 上的 TTY? (以及如何使用 tty 命令)

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

时间:2023-02-21 15:23:18浏览次数:49  
标签:TTY Ctrl tty 打字机 Linux Alt 电传

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

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

1800 年代的电传打字机

在 1830 年代和 1840 年代,开发了称为电传打字机的机器。 这些机器可以将键入的消息“沿着线路”发送到遥远的地方。 这些消息是由发件人在某种键盘上输入的。 它们在接收端打印在纸上。 它们是电报的进化步骤,以前依赖于莫尔斯电码和类似的电码。

消息被编码和传输,然后被接收、解码和打印。 有几种技术用于对消息进行编码和解码。 最著名的也是最多产的之一,于 1874 年由 Émile Baudot 获得专利,波特率就是以他的名字命名的。 他的字符编码方案比 ASCII 早 89 年。

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

为了纪念这一进步,这些机器被命名为电传打字机(teletypewriters),这被缩短为电传打字机(teletypes),并最终缩短为 TTY。 这就是我们从中获得首字母缩略词 TTY 的来源,但是电报与计算有什么关系呢?

ASCII 和电传

当 ASCII 于 1963 年问世时,它被电传打字机制造商采用。 尽管电话发明并广泛使用,电传打字机仍然很流行。

Telex 是一个全球性的电传打字机网络,可以将书面信息发送到全球各地。 在第二次世界大战后到 1980 年代传真机繁荣时期,它们是传输书面信息的主要方式。

计算机也在不断发展。 他们变得能够与用户实时交互,并支持多个用户。 旧的分批工作方法变得不够用了。 人们不想等待 24 小时或更长时间才能获得结果。 制作一堆穿孔卡片并通宵等待结果不再是可以接受的。

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

电传打字机的用途被重新定义

电传打字机是作为输入/输出设备的完美候选者。 毕竟,它是一种设计用于对信息进行打字、编码、发送、接收、解码和打印的设备。

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

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

硬件模拟:电传打字机

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

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

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

软件模拟:电传打字机

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

这就是 tty 的用武之地。

tty 能告诉我们什么?

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

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

让我们看看终端窗口的 tty 命令响应给我们什么:

$ tty
/dev/pts/1

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

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

静默选项

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

但它执行完成后,确实会产生一个退出值,如下所示:

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

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

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

$ tty -s && echo "In a tty"

who 命令

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

Alec 和 Mary 远程连接到 Linux 计算机。 它们连接到 PTS 1 和 2。
用户 Dave 显示为连接到“:0”。

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

访问 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 来尝试在计算机状态允许的情况下优雅地关闭。

三个小字母却历史悠久

tty 命令得名于 1800 年代后期的一种设备,于 1971 年出现在 Unix 中,至今仍是 Linux 和类 Unix 操作系统的一部分。

这个小家伙背后有很多故事。

ref:
https://www.howtogeek.com/428174/what-is-a-tty-on-linux-and-how-to-use-the-tty-command/

标签:TTY,Ctrl,tty,打字机,Linux,Alt,电传
From: https://www.cnblogs.com/eddyz/p/17141117.html

相关文章

  • linux常用命令笔记
    1、kill指定条件的进程ps -ef | grepsomeone| awk '{ print $2 }' | xargs kill -92、遍历删除当前目录下指定名称的文件(-typef来指定是删除文件,-type......
  • Linux 搭建Tomcat
    1、下载官网:https://tomcat.apache.org/download-80.cgi下载链接,自行到官网复制,直接使用如下链接,可能会出错的wgethttps://dlcdn.apache.org/tomcat/tomcat-8/v8.5.84......
  • kali-linux系统密码忘记了的解决方法
    1、电脑开机后kali系统会进入引导界面,这时不停的按【E】键进入启动前编辑命令(若系统没有出现这个页面,尝试重启以此来进入引导界面)2、进入启动前编辑命令界面后,在Linux这......
  • Linux磁盘/硬盘测速,dd命令
    参考:https://blog.csdn.net/Franciz777/article/details/126779259  ================================================= 概念介绍:/dev/zero:InUnix-likeoper......
  • M1安装PD tools linux-headers报错
    1.报错信息Anerroroccurredwhileinstallingthefollowingpackages:-linux-headers-5.18.0-kali5-arm64InstallthesepackagesmanuallyandstarttheParall......
  • linux服务器gitlab设置普通用户为超级管理员
    登录gitlab后台之后,如果判断账号是不是超级管理员呢1、看导航栏,是否有这个图标,如果有表示是超级管理员,如果没有则不是。 2、地址栏直接加admin访问,例如:192.168.1.22/ad......
  • java web项目在linux部署、启动,查看系统配置常用的linux命令总结
    本文为博主原创,未经允许不得转载:      以下为在工作中常用的linux命令进行了总结,主要在项目安装及启动,及编辑部署文件时应用较多1.gz文件是一种压缩文件。以·ta......
  • linux mysql操作命令大全
    1.linux下启动mysql的命令:mysqladminstart/ect/init.d/mysqlstart(前面为mysql的安装路径)2.linux下重启mysql的命令:mysqladminrestart/ect/init.d/mysqlrestart(前面......
  • linux lsof/netstat查看进程和端口号相关命令:
    本文为博主原创,未经允许不得转载:      在linux操作时,经常要查看运行的项目的进程和端口号,在这里总结了以下常用到的相关命令:      1.查看系统运行的java项目,......
  • Linux安装jdk之openjdk
    使用yum源1、查看yum库中都有哪些jdk版本yumsearchjava|grepjdk2、选择指定的版本安装,注意最后的*以及yum源安装的是openjdk,注意openjdk的区别。yuminstalljava......