当前位置: 首页 > news >正文

Linux中的tty和pts概念和区别

目录

1、什么是tty

(1)tty的概念

(2)tty0

(3)tty1~6

 2、什么是pts

(1)pts的含义

(2)pts的具体解释

3、pts与 tty 设备的比较

4、设备文件的位置


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 设备文件如tty0tty1等都在/dev目录中。例如,/dev/tty0代表控制台终端,/dev/tty1/dev/tty6代表虚拟终端。系统通过这些设备文件来管理对应的终端设备,当用户在终端进行输入输出操作时,实际上是系统在和这些设备文件打交道。

[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等。这些文件用于管理伪终端从设备,使得远程登录或本地终端模拟能够正常进行。

[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)
http://www.lryc.cn/news/516743.html

相关文章:

  • 【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
  • 机器学习经典算法——线性回归
  • MLU上使用MagicMind GFPGANv1.4 onnx加速!
  • VulnHub—potato-suncs
  • 【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
  • 【智能算法】改进蚁狮优化算法【matlab】
  • swagger导出json
  • Go语言的 的引用数据类型(Reference Data Types)核心知识
  • JAVA解析Excel复杂表头
  • jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
  • 我的创作纪念日——《惊变128天》
  • vuedraggable 选项介绍
  • 微信小程序获取后端数据
  • ThreadLocal` 的工作原理
  • 数据挖掘教学指南:从基础到应用
  • 大模型搜索引擎增强问答demo-纯python实现
  • 【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
  • 简洁安装配置在Windows环境下使用vscode开发pytorch
  • conda安装及demo:SadTalker实现图片+音频生成高质量视频
  • 【面试】后端开发面试中常见数据结构及应用场景、原理总结
  • 141.《mac m系列芯片安装mongodb详细教程》
  • Java 23 集合框架详解:ArrayList、LinkedList、Vector
  • 03、MySQL安全管理和特性解析(DBA运维专用)
  • 创建型模式5.单例模式
  • 用户界面软件02
  • VTK 鼠标+键盘重构
  • go语言处理JSON数据详解
  • 基于gin一个还算比较优雅的controller实现
  • PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它
  • Python编程实例-特征向量与特征值编程实现