目录
[3、pts与 tty 设备的比较](#3、pts与 tty 设备的比较)
1、什么是tty
(1)tty的概念
在 Linux 系统中,tty0 - tty6 是与终端设备相关的概念 。"tty" 是 "teletypewriter "(电传打字机)的缩写,在早期计算机系统中,终端设备类似于电传打字机,用于用户和计算机进行交互。随着技术的发展,这个名称被保留下来用于指代各种终端设备接口。
"tele -" 前缀
"tele -" 这个前缀来自希腊语,意思是 "远距离的;远的"。例如,在 "telephone"(电话)一词中,"tele -" 表示通过声音进行远距离通信;在 "television"(电视)中,表示通过图像进行远距离传播。在 "teletypewriter" 里,它表示这种设备能够实现远距离的文本信息传输。
"type" 部分
"type" 作为一个独立的单词,常见的意思是 "类型;种类",但在这里它是动词 "打字;用打字机打" 的意思。这表明设备的主要动作是进行打字操作,也就是将字符通过按键输入并打印出来。
"writer" 部分
"writer" 是名词,意思是 "作者;书写工具"。在 "teletypewriter" 中,它强调该设备是一种用于书写(打印)文本的工具,结合前面的 "type",可以理解为这是一种用于打字(打印)的设备,而且通过 "tele -" 前缀知道这种打字设备是可以用于远距离通信的。
(2)tty0
功能 :tty0 通常代表系统的控制台(console) 。控制台是系统启动时默认的显示和输入设备 ,也就是直接连接到计算机的显示器和键盘所在的终端。它提供了系统启动过程中的信息显示,如内核启动信息、系统初始化信息等。当系统正常启动后,用户登录界面也会显示在 tty0 上。
应用场景 :如果系统出现严重错误 ,如内核崩溃或者某些关键服务无法启动,相关的错误信息会输出到 tty0。另外,在没有图形化界面(如在服务器环境或者纯文本模式下),用户可以在 tty0 进行系统登录操作,通过命令行来管理系统。
(3)tty1~6
功能 :这些通常是虚拟终端(virtual terminals) 。在 Linux 系统中,用户可以通过组合键 (如在大多数系统中通过 "Ctrl + Alt + F1" 到 "Ctrl + Alt + F6")来切换到不同的虚拟终端 。每个虚拟终端可以独立运行一个登录会话,也就是说可以有不同的用户在不同的虚拟终端登录系统,并且在每个虚拟终端中运行不同的命令和程序。例如,一个用户可以在 tty1 中运行文本编辑器来编辑文件,同时另一个用户可以在 tty2 中通过命令行来查看系统状态。
应用场景 :这种多终端的设计提供了很大的灵活性。在服务器环境中,如果管理员需要同时进行多个任务,如一边在一个终端配置网络服务,一边在另一个终端查看日志文件,就可以通过切换不同的虚拟终端来实现。在开发环境中,开发者可以在一个虚拟终端中编译程序,在另一个虚拟终端中测试运行。而且在图形化界面出现问题时,用户仍然可以通过切换到虚拟终端来对系统进行操作。
在workstation中就可以使用crtl+alt+f1-6来切换虚拟终端进行登录系统。
2、什么是pts
(1)pts的含义
pts" 是 "pseudo - terminal slave"(伪终端从设备)的缩写。在 Linux 系统中,pts 设备用于实现远程登录或在本地通过终端模拟器 (如 xterm、gnome - terminal 等)进行的终端会话。与 tty 设备不同,pts 设备不是物理意义上的终端接口,而是软件模拟出来的终端环境。
"pseudo -" 部分
"pseudo -" 这个前缀的意思是 "假的;伪的"。就好比我们说 "pseudo - science"(伪科学),就是指那些看起来像科学,但实际上不是真正科学的东西。在 "pseudo - terminal slave" 里,"pseudo -" 表示这个终端不是真正的物理终端,而是模拟出来的。
"terminal" 部分
你可以把 "terminal" 简单理解成一个窗口或者一个通道,通过它你可以和计算机系统进行交互,就像你通过一个商店的收银台(终端)和商店的系统交互来结账一样。在计算机里,终端就是你输入命令和获取系统反馈的地方。
"slave" 部分
"slave" 在这里是一个比较专业的术语。在计算机的设备关系里,"slave" 和 "master"(主设备)是相对的概念。"slave" 设备通常是要听从 "master" 设备的指挥来工作的。在 "pseudo - terminal slave" 这个概念里,这个模拟的终端("pseudo - terminal")就像是一个从属设备,它要配合其他的程序或者设备来让你能够正常地和计算机系统进行交互。
(2)pts的具体解释
工作原理 :当你通过 SSH(Secure Shell)远程登录到 Linux 系统 ,或者在本地使用终端模拟器 打开一个新的终端窗口时,系统会为这个会话分配一个 pts 设备,通常第一个分配的是 pts/0。这个 pts/0 就相当于一个虚拟的终端接口,通过它可以像在本地物理终端(如 tty 设备)一样进行命令输入和输出操作。
应用场景 :例如,当你使用 SSH 客户端从远程计算机连接到 Linux 服务器时,服务器端会为你的连接创建一个 pts/0 设备(如果是第一个连接)。你在 SSH 客户端中输入的命令会通过网络传输到服务器端的 pts/0 设备,服务器会根据命令进行处理,并将结果返回给 pts/0,然后再通过网络传输回你的 SSH 客户端显示出来。同样,在本地使用终端模拟器打开新窗口时,每个窗口会被分配一个 pts 设备,方便用户在不同的终端窗口中进行不同的操作,如在一个 pts 设备对应的窗口中编译程序,在另一个 pts 设备对应的窗口中查看文档等。
3、pts与 tty 设备的比较
tty 设备通常与本地物理连接相关 (如控制台或者虚拟终端),而 pts 设备主要用于远程登录和终端模拟器。另外,tty 设备数量相对固定(如 tty0 - tty6),而 pts 设备的数量可以根据需要动态生成,例如,如果有多个用户同时通过 SSH 远程登录,系统会为每个用户依次分配 pts/0、pts/1 等设备。
4、设备文件的位置
tty 设备文件 :tty 设备文件如tty0
、tty1
等都在/dev
目录中。例如,/dev/tty0
代表控制台终端,/dev/tty1
到/dev/tty6
代表虚拟终端。系统通过这些设备文件来管理对应的终端设备,当用户在终端进行输入输出操作时,实际上是系统在和这些设备文件打交道。
cs
[root@ptivitic ~]# ll /dev | grep tty
crw-rw-rw- 1 root tty 5, 2 Jan 5 15:44 ptmx
crw-rw-rw- 1 root tty 5, 0 Dec 17 23:55 tty
crw--w---- 1 root tty 4, 0 Dec 17 23:55 tty0
crw--w---- 1 root tty 4, 1 Dec 17 23:55 tty1
crw--w---- 1 root tty 4, 10 Dec 17 23:55 tty10
crw--w---- 1 root tty 4, 11 Dec 17 23:55 tty11
crw--w---- 1 root tty 4, 12 Dec 17 23:55 tty12
pts 设备文件 :pts 设备文件同样位于/dev
目录下。当你通过 SSH 远程登录或者使用终端模拟器打开新的终端窗口时,系统会在/dev
目录下创建相应的 pts 设备文件,如/dev/pts/0
、/dev/pts/1
等。这些文件用于管理伪终端从设备,使得远程登录或本地终端模拟能够正常进行。
cs
[root@ptivitic ~]# ll /dev/pts
total 0
crw--w---- 1 root tty 136, 0 Jan 5 2025 0
crw--w---- 1 root tty 136, 1 Jan 5 15:08 1
c--------- 1 root root 5, 2 Dec 17 23:55 ptmx
[root@ptivitic ~]# who
root pts/0 2025-01-05 14:33 (112.44.20.187)
root pts/1 2025-01-05 15:08 (112.44.20.187)