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

详解Linux系统的终端(Terminal)以及分类(各种tty开头的设备文件)

目录

  • 终端(Terminal)的概念和作用
  • 终端(Terminal)在Linux中被视为设备,每个终端有自己的设备文件
  • tty三个字母的来源(tty名字的来源)
  • 如何查看当前终端的设备文件
  • 常见终端的分类
    • 1-串口终端
    • 02-虚拟控制台终端(Virtual Console)
    • 03-伪终端(Pseudo Terminal)
  • 特殊的设备文件:`/dev/tty0`

终端(Terminal)的概念和作用

在Linux中,终端(Terminal)是与计算机系统进行交互的界面,通常用于输入命令、运行程序、查看输出等操作。

Linux系统的终端(Terminal)简单粗暴的理解就是平时自己向Linux系统输入命令并接收返回信息的东西,比如我用SecureCRT连接上Linux系统打开的各个控制台窗口:
在这里插入图片描述
再比如我在Ubuntu中搜索Terminal打开的东西也是终端:
在这里插入图片描述
在这里插入图片描述

终端(Terminal)在Linux中被视为设备,每个终端有自己的设备文件

在Linux系统中,所有类型的终端,包括物理终端、虚拟终端、伪终端和串口终端,都被视为设备,并且它们都有对应的 设备文件。这些设备文件位于 /dev 目录下,每个终端设备都通过文件系统提供与系统进行交互的接口。

当你在终端中输入命令时,系统会将输入通过相应的设备文件(如 /dev/tty1/dev/pts/0)传递到内核进行处理。
系统的输出(例如命令结果)会通过相应的终端设备文件返回给终端仿真程序,最终显示在终端窗口中。

tty三个字母的来源(tty名字的来源)

在Linux中,以tty开头的设备文件通常用于终端设备。tty是“Teletypewriter”的缩写,最初指的是电传打字机,后来泛指终端设备。

如何查看当前终端的设备文件

输入下面这个命令就可以看查看当前终端的设备文件

tty

示例截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常见终端的分类

1-串口终端

比如我与开发板之间通过串口通信形成的终端就是一种典型的串口终端。在串口终端上运行tty命令的结果如下:
在这里插入图片描述
设备文件名称中的mxc是 Freescale/NXP i.MX 系列处理器的串行控制器名称。
不过一般的串口终端的设备文件的名称通常是/dev/ttySX(如/dev/ttyS0、/dev/ttyS1等)。

02-虚拟控制台终端(Virtual Console)

虚拟控制台终端(简称虚拟终端)是系统启动后由 Linux 内核提供的,通常从系统启动时就开始运行并一直存在,直到系统关机。它们是通过系统的 内核 和 虚拟终端驱动(vt 驱动) 来模拟的。

当 Linux 系统启动时,内核会自动分配多个虚拟终端(通常是 tty1tty6,可以通过 Ctrl + Alt + F1 到 F6 切换)。这些终端一开始就存在,并且在整个系统运行过程中一直保持活跃。

虚拟终端让用户能够在没有图形用户界面的情况下(或在多用户环境中)通过键盘和显示器进行系统管理、登录、运行命令等。每个虚拟终端提供独立的会话,你可以在每个终端上执行不同的任务。

虚拟控制台终端的设备文件的路径和名称通常是/dev/ttyXX 是从 06,通常 tty1tty6

03-伪终端(Pseudo Terminal)

Ubuntu图形界面下搜索Terminal打开的终端就是伪终端,另外通过网络远程连接(如 SSH)得到的终端也是伪终端,所以其实目前来说这种终端是很常用的。

伪终端因为也可以打开很多个,所以其实它也能像虚拟控制台终端那样具有实现多任务处理的效果。不过伪终端不像虚拟控制台终端那样系统启动后就存在并且一直运行,伪终端则需要人为打开才行,比如在Ubuntu图形界面下搜索Terminal打开,或者通过SSH远程连接打开。

伪终端的设备文件的名字通常如下:
/dev/pts/XX 是一个数字,表示不同的伪终端设备)

相关截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特殊的设备文件:/dev/tty0

/dev/tty0是一个特殊的设备文件,它代表当前活跃的虚拟控制台终端。当你在一个特定的虚拟控制台上工作时,系统会将其作为当前控制台,并将输出发送到该控制台。如果你在 tty1 上登录并工作,/dev/tty0 通常指向 tty1,因为它是当前活动的虚拟控制台终端。


http://www.kler.cn/a/531510.html

相关文章:

  • 重新刷题求职2-DAY1
  • Docker入门篇(Docker基础概念与Linux安装教程)
  • ubuntu解决普通用户无法进入root
  • 【编译系列】Torch.compile()训练编译——算子融合逻辑 工程化
  • 【腾讯前端面试】纯css画图形
  • 北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评
  • 蓝桥杯python基础算法(2-1)——排序
  • PHP Composer:高效依赖管理工具详解
  • 鲸鱼算法 matlab pso
  • Python基础-字符串和编码
  • 8266使用websocket库
  • SpringCloud篇 微服务架构
  • Leetcode 3444. Minimum Increments for Target Multiples in an Array
  • OSCP - Proving Grounds - Roquefort
  • 基于物联网技术的实时数据流可视化研究(论文+源码)
  • 高效接口限流:基于自定义注解与RateLimiter的实践
  • 代码随想录day27
  • FunASR的服务启动_3
  • 02.04 数据类型
  • 前端知识速记--CSS篇:display
  • UE5 蓝图学习计划 - Day 12:存储与加载
  • 使用Pytorch训练一个图像分类器
  • 通信易懂唠唠SOME/IP——SOME/IP消息格式
  • 2024-我的学习成长之路
  • DeepSeek:AI领域的创新先锋
  • 使用mybatisPlus插件生成代码步骤及注意事项