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 设备文件如tty0、tty1等都在/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)
相关文章:
Linux中的tty和pts概念和区别
目录 1、什么是tty (1)tty的概念 (2)tty0 (3)tty1~6 2、什么是pts (1)pts的含义 (2)pts的具体解释 3、pts与 tty 设备的比较 4、设备文件的位置 1、什…...
【SOC 芯片设计 DFT 学习专栏 -- RTL 中的信号名和 Netlist 中的信号名差异】
Overview 本文将介绍 soc 设计中 RTL-to-Netlist 映射及 RTL 中的信号名和 Netlist 中的信号名差异, 在 SoC设计中,RTL-to-Netlist映射 是从RTL(Register Transfer Level)代码转换为Netlist的过程。这通常涉及将用硬件描述语言&…...
机器学习经典算法——线性回归
目录 算法介绍 一元线性回归模型 多元线性回归模型 误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析,来确定两种或两种…...
MLU上使用MagicMind GFPGANv1.4 onnx加速!
文章目录 前言一、平台环境准备二、环境准备1.GFPGAN代码处理2.MagicMind转换修改env.sh修改run.sh参数解析运行 3.修改后模型运行 前言 MagicMind是面向寒武纪MLU的推理加速引擎。MagicMind能将人工智能框架(TensorFlow、PyTorch、Caffe与ONNX等)训练好…...
VulnHub—potato-suncs
使用命令扫描靶机ip arp-scan -l 尝试访问一下ip 发现一个大土豆没什么用 尝试扫描一下子域名 没有发现什么有用的信息 尝试扫描端口 namp -A 192.168.19.137 -p- 尝试访问一下端口,发现都访问不进去 查看源代码发现了网页的标题 potato,就想着爆破一下密码 hydr…...
【Flink CDC】Flink CDC的Schema Evolution表结构演变的源码分析和流程图
Flink CDC版本:3.2.1 说明:本文从SchemaOperator接收到,表结构变更事件开始,表结构变更事件应由source端产生,本文不讨论。 可以先看流程图,研究源码。 参考文章: Flink cdc3.0动态变更表结构—…...
【智能算法】改进蚁狮优化算法【matlab】
目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型,即原始ALO算法的基础上添加了两种改进策略: - 改进1:将原先的间断性边界收缩因子变为连续性边界…...
swagger导出json
要将 Swagger(或者 OpenAPI)文档导出为 JSON 文件,通常有几种常见的方法,具体取决于你使用的 Swagger 工具(如 Swagger UI、Swagger Editor、Swagger Hub 等)。下面列出了几种常见的导出 JSON 文件的方法。 1. 通过 Swagger UI 导出 JSON 文件 如果你在使用 Swagger UI…...
Go语言的 的引用数据类型(Reference Data Types)核心知识
Go语言的引用数据类型(Reference Data Types)核心知识 引言 Go语言作为一种现代编程语言,因其简洁的语法、强大的并发支持以及丰富的标准库而受到广泛欢迎。在Go语言中,数据类型可以分为值类型和引用类型。本文将深入探讨Go语言…...
JAVA解析Excel复杂表头
废话不多说,直接上源码。前后端都有哦~~~~~~~~ 能帮到你记得点赞收藏哦~~~~~~~&#…...
jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例
1. 各个组件如何新建的? 2. "http请求" 组件内容样例: "消息体数据" 源码: {"task_tag": "face_detect","image_type": "base64","extra_args": [{"model"…...
我的创作纪念日——《惊变128天》
我的创作纪念日——《惊变128天》 机缘收获日常成就憧憬 机缘 时光飞逝,转眼间,我已在这条创作之路上走过了 128 天。回顾起 2024 年 8 月 29 日,我满怀忐忑与期待,撰写了第一篇技术博客《讲解LeetCode第1题:两数之和…...
vuedraggable 选项介绍
vuedraggable 是基于 SortableJS 的 Vue 组件,提供了丰富的选项来定制拖拽行为。以下是 vuedraggable 常用的选项和它们的详细说明: 常用选项介绍 group 配置拖拽分组。多个列表可以共享同一个分组,允许它们之间的项目互相拖拽。 group: { na…...
微信小程序获取后端数据
在小程序中获取后端接口数据 通常可以使用 wx.request 方法,以下是一个基本示例: // pages/index/index.js Page({data: {// 用于存储后端返回的数据resultData: [] },onLoad() {this.fetchData();},fetchData() {wx.request({url: https://your-backe…...
ThreadLocal` 的工作原理
ThreadLocal 的工作原理: ThreadLocal 是 Java 提供的一个类,它用于为每个线程提供独立的变量副本。也就是说,多个线程访问同一个 ThreadLocal 变量时,每个线程看到的值都是不同的,相互隔离,互不干扰。 T…...
数据挖掘教学指南:从基础到应用
数据挖掘教学指南:从基础到应用 引言 数据挖掘是大数据时代的核心技术之一,它从大量数据中提取有用信息和知识。本教学文章旨在为学生和初学者提供一个全面的数据挖掘学习指南,涵盖数据挖掘的基本概念、流程、常用技术、工具以及教学建议。…...
大模型搜索引擎增强问答demo-纯python实现
流程概览 本文使用python语言,实现了大模型搜索引擎增强问答demo。 大模型搜索引擎增强问答定义:根据问题搜索得到相关内容,拼接prompt=问题+搜索结果,将这个prompt传入大模型,得到最终的结果。 优势在于搜索引擎可以返回实时性信息,例如明日双色球开奖信息、最新八卦…...
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
目录😋 任务描述 编程要求 相关知识 1. 选择结构 2. 主要语句类型 3. 比较操作 4. 交换操作 测试说明 通关代码 测试结果 任务描述 本关任务:从键盘上输入三个数,请按从小到大的顺序排序并打印输出排序后的结果。 编程要求 根据提示…...
简洁安装配置在Windows环境下使用vscode开发pytorch
简洁安装配置在Windows环境下使用vscode开发pytorch 使用anaconda安装pytorch,通过vscode集成环境开发pytorch 下载 anaconda 下载网址,选择对应系统的版本 https://repo.anaconda.com/archive/ windows可以选择Anaconda3-2024.10-1-Windows-x86_64.e…...
conda安装及demo:SadTalker实现图片+音频生成高质量视频
1.安装conda 下载各个版本地址:https://repo.anaconda.com/archive/ win10版本: Anaconda3-2023.03-1-Windows-x86_64 linux版本: Anaconda3-2023.03-1-Linux-x86_64 Windows安装 环境变量 conda -V2.配置conda镜像源 安装pip conda…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
