当前位置: 首页 > 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)

相关文章:

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…...

Dubbo Logback 远程调用携带traceid

背景 A项目有调用B项目的服务&#xff0c;A项目使用 logback 且有 MDC 方式做 traceid&#xff0c;调用B项目的时候&#xff0c;traceid 没传递过期&#xff0c;导致有时候不好排查问题和链路追踪 准备工作 因为使用的是 alibaba 的 dubbo 所以需要加入单独的包 <depend…...

大故障,阿里云核心域名疑似被劫持

2025年6月5日凌晨&#xff0c;阿里云多个服务突发异常&#xff0c;罪魁祸首居然是它自家的“核心域名”——aliyuncs.com。包括对象存储 OSS、内容分发 CDN、镜像仓库 ACR、云解析 DNS 等服务在内&#xff0c;全部受到波及&#xff0c;用户业务连夜“塌房”。 更让人惊讶的是&…...

STM32开发中,线程启动异常问题排查简述

1. 参数传递问题 错误类型&#xff1a;线程属性错误地使用。影响&#xff1a;线程属性&#xff08;如堆栈大小、优先级&#xff09;不匹配可能导致线程创建失败或行为异常。验证方法&#xff1a;检查 线程创建的返回值&#xff0c;若为 NULL 则表示线程创建失败。 2. 系统资源…...

《Progressive Transformers for End-to-End Sign Language Production》复现报告

摘要 本文复现了《Progressive Transformers for End-to-End Sign Language Production》一文中的核心模型结构。该论文提出了一种端到端的手语生成方法&#xff0c;能够将自然语言文本映射为连续的 3D 骨架序列&#xff0c;并引入 Counter Decoding 实现动态序列长度控制。我…...

将数据库表导出为C#实体对象

数据库方式 use 数据库;declare TableName sysname 表名 declare Result varchar(max) /// <summary> /// TableName /// </summary> public class TableName {select Result Result /// <summary>/// CONVERT(NVARCHAR(500), ISNULL(ColN…...

STM32学习之I2C(理论篇)

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

hadoop集群datanode启动显示init failed,不能解析hostname

三个datanode集群&#xff0c;有一个总是起不起来。去查看log显示 Initialization failed for Block pool BP-1920852191-192.168.115.154-1749093939738 (Datanode Uuid 89d9df36-1c01-4f22-9905-517fee205a8e) service to node154/192.168.115.154:8020 Datanode denied com…...

C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、初识文件加密&#xff1a;为什么需要…...

grafana-mcp-analyzer:基于 MCP 的轻量 AI 分析监控图表的运维神器!

还在深夜盯着 Grafana 图表手动排查问题&#xff1f;今天推荐一个让 AI 能“读图说话”的开源神器 —— grafana-mcp-analyzer。 想象一下这样的场景&#xff1a; 凌晨3点&#xff0c;服务器告警响起。。。你睁着惺忪的眼睛盯着复杂的监控图表 &#x1f635;‍&#x1f4ab;花…...

GIC700组件

GIC700包含了几个重要的组件,它们使用一个内部的GIC互联,用于在不同的组件之间使用AXI5-Stream接口进行路由。 1. Distributor(GICD) gicd是GIC700中所有组件之间的主要通信节点。它作为SPI的管理者以及维护LPI的cache,并且与其它chip上的GIC700组件进行通信。当支持GIC…...