前言:我们经常听见两个概念,终端和控制台,但是它们的本质到底是什么,到底有什么区别,却很少能够讲得清楚,虽然明确的区分它们并没有太大的用处,但是对于理解Linux还是非常有帮助的。

一、终端Terminal

1.1 终端的定义

(1)什么是终端?

终端就是处理计算机主机输入输出的一套设备,它用来显示主机运算的输出,并且接受主机要求的输入,典型的终端包括显示器键盘套件打印机打字机套件等。

(2)终端的本质。

其实根本上也就一句话,能接受输入,能显示输出,就这就够了,不管到了什么时代,终端始终扮演着人机接口的角色,所谓Terminal,即机器的边缘!

只要能提供给计算机输入和输出功能,它就是终端,而与其所在的位置无关

1.2 终端的分类

  • 本地终端 
    用VGA连接主机和显示器,用PS/2或者USB连接主机和键盘,这样的一个显示器/键盘组合就是一个本地终端。

  • 用串口连接的远程终端 
    通过串口线把主机接到另外一个有显示器和键盘的主机,通过运行一个终端模拟程序,比如“Windows超级终端”来将这台主机的显示器和键盘借给串口对端的主机。

  • 用TCP/IP承载的远程终端 
    类似Telnet,SSH这般。

前两类又称之为“物理终端”,后面的那个称之为“伪终端”

大致就先说这几类吧。可见上述的三类中,前两类都是在本地就直接关联了物理设备的,比如VGA口啊,PS/2口啊,串口啊之类的,这种终端叫做物理终端,而第三类在本地则没有关联任何物理设备,注意,不要把物理网卡当成终端关联的物理设备,它只是隧道关联的物理设备,这里的物理网卡完全可以换成卡车,它们与终端并不直接相关,所以这类不直接关联物理设备的终端叫做伪终端

二、控制台Console

2.1 什么是控制台

显示系统消息的终端就叫控制台,Linux 默认所有虚拟终端都是控制台,都能显示系统消息。
另外,对于那些专门用来模拟终端设备的程序,我们也可以称之为控制台Console,像gnome-terminal,urxvt,mlterm,xterm等软件,都可以称之为控制台,

总结:控制台是终端的特例,是终端的真子集,它是虚拟的终端,

2.2 终端与控制台的区分

物理终端:直接连接在主机上的显示器、键盘鼠标统称。在实际机架式服务器部署中,一般是多台服务器共享一套终端,简称KVM(Keyboard键盘,video显示器,mouse鼠标)

虚拟终端(tty):附加在物理终端之上,用软件方式虚拟实现,CentOS默认启用6个虚拟终端,可以通过快捷键来切换,切换方式:Ctrl-Alt-F[1--6], 对应的文件是/dev/tty#。

可以同过tty命令来查看当前的虚拟终端号。ttyteletype writer的简称。

伪终端(pty):两种应用场景,

(1)第一在图形界面下打开的命令行接口,我们经常使用Ctrl+Alt+T打开的那个实际上就是一个 伪终端

(2)第二基于ssh协议或telnet协议等远程打开的命令行界面,是运维工程师用的最多的一种连接服务器的方式。pts(pseudo-terminal slave)是pty的实现方法。

总结三个观点:

(1)控制台是终端的真子集

(2)tty2-tty6,这五个黑色的界面是虚拟终端,它们是真正的控制台,此时的5个虚拟终端,我们就称之为控制台

(3)桌面之下通过Ctrl+Alt+T打开的那个东西是一个伪终端,远程通过Telnet或者是ssh连接的也是创建的伪终端

linux中已经完全淡化了控制台和终端的区别

三、Linux下关于终端的一些设备文件

Linux下一切皆文件。

3.1 /dev/ttyX 设备文件

tty是最令人熟悉的了,在Linux中,/dev/ttyX代表的都是上述的物理终端,其中,/dev/tty1~/dev/tty63代表的是本地终端,也就是接到本机的键盘显示器可以操作的终端。事实上Linux内核在初始化时会生成63个本地终端,通过键盘上的Fn-Alt-FX(X为1,2,3…)可以在这些终端之间切换,每切换到一个终端,该终端就是当前的焦点终端,比如说,你按下了Fn-Alt-F4组合键,那么此时第4个终端就是焦点终端,即/dev/tty4就是焦点终端设备。

3.2 /dev/console 设备文件

系统中有没有什么变量可以表示焦点终端呢?当然有了,那就是/dev/console,不管你在哪里往/dev/console里写东西,这些东西总会出现在系统当前的焦点终端上!

本质上/dev/console其实就是一个全局变量,指代当前的焦点终端,如果当前的焦点是/dev/tty4,那么/dev/console指的就是/dev/tty4,当然这一切都是由内核来维护的。

那么系统中有没有一个叫做自己的全局变量呢?当然有,那就是/dev/tty,也就是说,无论你在哪个终端下工作,当你往/dev/tty里写东西的时候,它总是会马上出现在你的眼前。

总结:/dev/tty1~/dev/tty63我们知道了它们是什么,/dev/tty表示自己,/dev/console表示焦点终端这些我们也知道了,

3.3 串口终端 ttyS

开头的就是串口连接的终端,比如ttyS0,ttyS1,ttyS2

最后,解释一下伪终端。其实也很好解释,只要你理解TUN/TAP虚拟网卡的原理就行,它们如出一辙!类似Telnet,SSH不是没有实际的物理设备吗?简单,给它模拟一个不就得了?系统是分层的,执行流只管调用接口,并不管具体实现。

模拟一个虚拟的终端设备,实现它的write,read等回调即可。对于VGA连接的显示器而言,write其实就是将显存刷新,而对于伪终端而言,write其实是想将数据导入到一个用户态的程序中(不然又能去哪里呢?它下面又没有任何物理的东西),这简直跟很多VPN的原理非常类似。

3.4 桌面系统虚拟终端tty2-tty6,又称之为控制台终端

在Linux系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端,并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1 –tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向/dev /tty0进行写操作,

备注:这个地方跟3.1中的有所重复,还有一些小的细节没搞清楚,比如tty2-tty6称之为虚拟终端,那tty7-tty63指的又是什么,又有什么作用呢?还不是很清楚,望有大佬告知!)

3.5 伪终端

前面说过伪终端的两种情况:

第一是在Xwindows(桌面GUI环境之下)模式下的启动的终端称之为伪终端;

第二是在远程如果用telnet远程登录的话,也是创建的一个伪终端

Linux设计出一对虚拟终端设备,即/dev/ptmx/dev/pts/X。这就跟TUN/TAP网卡的网卡与字符设备之前的对应关系一致。

简单来讲,当有ssh客户端连接后,sshd会fork一个进程,然后在子进程中打开一个叫做/dev/pts/1(或者2,3,4,5…)的设备,然后和sshd进程的/dev/ptmx配对,这样在ptmxpts之间就构成了一条管道,数据可以顺利被导入到sshd,然后通过TCP/IP封装发往ssh client所在的机器。

总结:

/dev目录下的各种ttyptmxpts/X(X是1,2,3等数字)console 等等这些是令人混淆的根源,其实理解这些是有窍门的,记住它们只是操作某种终端设备的设备文件而已,这是UNIX风格的延续,这些设备文件对应的真实设备也就那么几种,比如显示器键盘套件,串口对面的超级终端,伪终端对面的SSH,Telnet等等。

四、tty命令

Linux tty命令用于显示终端机连接标准输入设备的文件名称。

在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下。你可以执行tty(teletypewriter)指令查询目前使用的终端机的文件名称。

命令格式如下:

tty [-s][--help][--version]

4.1 伪终端——桌面GUI下的terminal和远程通过ssh创建的terminal

比如在我的centos系统中,默认进入到的是带有桌面的哪一个tty,即所谓的tty1,现在打开一个terminal,然后执行tty命令,得到:

[zoe@localhost ~]$ tty
/dev/pts/1   # 这是第一个伪终端

如果是我再打开一个terminal,如下:

[zoe@localhost ~]$ tty
/dev/pts/2   # 这是第二个伪终端

这里属于伪终端的第一种情况——桌面环境下的terminal。

现在我在自己的电脑上通过ssh连接到一个Linux服务器,然后执行命令,得到:

tengjian@tcl-Super-Server:~$ tty
/dev/pts/21   # 通过ssh远程连接创建的伪终端,这里由于服务器有多个人连接,创建的是第21个伪终端

伪终端总结:

(1)/dev/ptsn 伪终端(pseudo-tty)。n取值动态增长。Telnet和ssh远程登录或桌面环境下即是此情况。

(2)伪终端是动态增加的。/dev/pts是远程登陆(telnet,ssh等)后创建的控制台设备文件所在的目录。由于可能有好几千个用户登陆,所以/dev/pts其实是动态生成的,不像其他设备文件是构建系统时就已经产生了。

4.2 虚拟终端——tty1-tty6,我们称这几个为控制台console

在同样的这个centos系统上,先按Ctrl+Alt+F2,激活第二个tty2,然后执行tty命令,如下:

[zoe@localhost ~]$ tty
/dev/tty2    #第二个虚拟终端

在同样的这个centos系统上,先按Ctrl+Alt+F3,激活第二个tty3,然后执行tty命令,如下:

[zoe@localhost ~]$ tty
/dev/tty3    #第三个虚拟终端

五、全文总结:

(1)终端terminal是一个非常宽泛的概念;

(2)桌面Linux系统中,tty2-tty6  是虚拟终端,也称之为控制台终端,也称之为控制台console;

(3)伪终端的两种情况,第一是桌面环境下的终端,第二种是通过Telnet或者是ssh连接的。

Linux中的终端(Terminal)与控制台(Console)的区别相关推荐

  1. 【转】Linux中tty、pty和pts概念及区别

    转自:Linux中tty.pty和pts概念及区别 - 知乎 基本概念 ①tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是一种 ...

  2. 【整理归纳】Linux中文件的Access,Modify,Change区别

    [整理归纳]Linux中文件的Access,Modify,Change区别 Access\Modify\Change的初始时间记录都是文件被创建的时间 Access 指最后一次读取的时间(访问) Mo ...

  3. Linux中sudo、su和su -命令的区别

    Linux中sudo.su和su -命令的区别小结 我们知道,在Linux下对很多文件进行修改都需要有root(管理员)权限,比如对/ect/profile等文件的修改.下面这篇文章主要给大家总结介绍 ...

  4. linux中rpm.bin文件与bin文件的区别

    linux中rpm.bin文件与bin文件的区别 rpm.bin 你执行后会生成rpm打包的安装文件 你就可以使用命令 rpm -ivh xxx.rpm 来安装了 只能在redhat系的发行版上使用 ...

  5. Linux中的终端、控制台、tty、pty等概念

    基本概念: 1>tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东 ...

  6. 如何在 Ubuntu Linux 中打开终端(小白教程)

    文章目录 1.使用键盘快捷键启动 Ubuntu 终端 2.从菜单中打开终端 3.从文件资源管理器(Nautilus)在终端中打开当前目录位置 1.使用键盘快捷键启动 Ubuntu 终端 同时按下 Ct ...

  7. Linux 中多终端同步 history 记录

    很多文章都是第一时间在语雀进行了更新和发布,公众号的文章只是在语雀平台的基础上进行同步的,而且更新频率也会比语雀要慢.最近弃坑简书,入驻语雀,欢迎阅读原文来语雀一起交流学习. 基本认识 Linux 默 ...

  8. linux中超级终端怎么用,Linux系统下超级终端Minicom的使用方法是什么?

    linux 下的超级终端minicom的使用手册 Linux下的Minicom的功能与Windows下的超级终端功能相似,适于在linux通过超级终端对嵌入式设备的管理以及对嵌入操作系统的升级,现写出 ...

  9. Linux中tty、pty、pts的概念区别

    基本概念:1> tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东 ...

最新文章

  1. 回归模型(regression model)有哪些指标?如何计算回归指标(regression metrics)?如何可视化他们?
  2. 【电子书】C++编程开发30问
  3. 企业官网示例以及数据库表结构
  4. 你若安好,便是晴天。
  5. 使用cat写入内容到指定文件
  6. linux目录创立文件硬链接,在Linux中创建文件目录软链接、硬链接的方法
  7. ssm集成mysql_idea+SSM+Mysql框架整合
  8. Spring Security构建Rest服务-1401-权限表达式
  9. echarts迁徙图 vue_vue中echarts引入中国地图的案例
  10. vnr懒人版教程_凉皮懒人做法,不揉面不洗面,配方配料无保留,简单快速又好吃...
  11. java版spring cloud+spring boot+redis社交电子商务平台-docker-feign配置(五)
  12. Hystrix学习——(2)雪崩效应
  13. 计算机的数字符号化是什么,电脑输入数字变成符号怎么办
  14. 七类人不适合学计算机,考研女生谨慎报考!这几个专业可能真的不适合!
  15. wi7计算机如何查看隐藏的文件夹,win7隐藏的文件夹怎么显示?隐藏文件夹查看及设置方法...
  16. Web 2.0概念地图-from Tim Oreilly
  17. 直播电商的运营逻辑,是否可以复制?
  18. 关系运算符与逻辑运算符
  19. REVIT建模“族类别和族参数”中的“总是垂直”“基于工作平面”怎么用?
  20. 已加载插件:fastestmirror Loading mirror speeds from cached hostfile

热门文章

  1. 计算机/编程 名词大全
  2. Talent Show 分数规划加背包dp(还不太懂)
  3. 2017-11-13
  4. 超高频RFID电子标签常见应用领域有哪些
  5. 人工智能已到瓶颈! AI未来发展方向
  6. 简单布隆过滤器设计方案
  7. B3U4 Text A Language Focus 共34词
  8. npm start报“npm ERR! enoent ENOENT: no such file or directory, open ‘C:\Users\XXX\package.json‘”
  9. 广告拦截器:不要与他们战斗; 了解他们
  10. (四)秒杀扣库存、订单创建、支付、读各种信息