本篇主要介绍终端和控制台的区别,其次列出几种不同的终端类型(ttyXXX)
要明白这两者关系,还得从很久很久以前的计算机使用开始说起。
历史:
首先说一下终端(terminal):
最早的计算机价格很高,因此为了充分利用计算机资源,一般都是支持多用户同时登陆使用的。这样的话,一台电脑就需要连接很多键盘和显示器来提供给每个人使用。在以前专门有这种能直接连接到计算机上的设备(键盘和显示器),使用简单的通信电路进行连接(通常是串口),这个电路只是用来提供数据的传输和显示,没有处理数据的能力,只负责连接到计算机上登录。既然可以允许多个键盘和显示器同时连接到计算机上,所以当时的操作系统就已经是多用户多任务的了(为了充分利用价格昂贵的计算机资源)。这样的每一套连接的键盘和显示器能够通过串口连接到计算机的设备就叫做终端。
终端设备两个(右),计算机和控制台(左)
控制台(console)又是什么呢?
在各个领域都有控制台的存在比如:
调音台 飞机控制台
控制台从字面意思来看,就是一个直接用于控制设备的台面,台面上有很多按钮显示屏等。
在计算机领域也同样存在,把那套直接与计算机组装在一起的键盘和显示器就称作控制台。
请注意:它和终端的区别,终端是通过串口线(额外的物理连线)连接到计算机上的,而
控制台是计算机本身就有的设备,一个计算机只有一个控制台。在计算机启动的时候,所有的启动信息都会打印到控制台上,而不会显示到终端上。也就是说,控制台是计算机的基本组成设备。而终端是为了充分利用计算机多出来的附加设备。
在计算机操作系统中什么信息会打印到控制台而不在终端上呢?比如内核启动信息和运行日志,都是显示到控制台上,但不会显示到终端上。这是区分控制台和终端的重要依据。
现在:
随着计算机越来越便宜,目前都是个人笔记本(单独用户的),不再链接上真正意义上的硬件终端设备了。终端和控制台由很久以前的硬件概念,演化成了软件概念。
现在说的linux终端都是使用软件虚拟出来的终端(虚拟终端)。他用软件的方式模拟出硬件通信方式。比如Ubuntu的 ctrl + alt + f2 ~ f6. 是6个虚拟终端,就好比以前6个人共用一台计算机所使用的套键盘和显示屏一样。只不过这里是用软件模拟出来的。这也是为什么叫做虚拟终端(VT, Virtual Terminal的缩写)的原因。
终端(terminal): 在Ubuntu中按下 ctrl + alt + f2 ~ f6.
控制台(console): 在 Ubuntu中按下 ctrl + alt + f1 .
(ctrl + alt + f1): tty1 console (ctrl + alt + f2): tty2 terminal
做实验说明:
1、ctrl + alt + f1 ~ f6.
可以发现只有 f1 显示有系统启动时的打印信息,也就表明tty1 是控制台。
2、echo "hello world" > /dev/console
在linux中一切设备皆文件,包括控制台设备,它对应得文件是 /dev/console , 如上命令就是往控制台上打印 hello world。但是在Ubuntu中无论在tty1~6 中的那个终端执行都会显示到当前虚拟终端上。也就是说,此时linux把当前的终端当做控制台来看待了。这样看来,linux已经淡化了控制台和终端的区别。但是在其他类UNIX系统上,控制台和终端就会有很明显的区别,比如freeBSD系统。
(ctrl + alt + f1): tty0 console (ctrl + alt + f1): tty2 terminal
如下图:
还有另外一些信息也会在控制台上显示,比如那个终端登录,系统启动日志等,全都显示
在这个真正的控制台上。在这里就明显的区分出了控制台和终端了,只不过他们都是现在用
软件模拟出来的,跟以前的硬件实现是一个意思。
好了明白了终端和控制台区别之后。
最后总结一下:很久以前需要共享计算机时,控制台和终端都是物理硬件加上他们的驱动和软件。现在不需要多人共享,但是仍然保留着用用软件模拟的控制台和终端设备文件现在的linux也在把控制台和终端的概念慢慢的淡化。对于普通用户,可以理解控制台和终端就是:可以用于输入命令并显示程序运行结果的窗口。不用严格区分。
终端设备类型(tty):Teletypes的缩写
tty也是一个UNIX命令,用来指出当前终端设备的名称。
终端是一种字符型设备,它有多种类型,通常用tty来简称各种类型的终端设备
1、串行端口终端(Serial Port Terminal) : /dev/ttySn
2、伪终端(Pseudo Terminal):/dev/pty/
3、控制终端: /dev/tty
4、控制台: /dev/ttyn, /dev/console
终端相关的一些Linux命令:
who/w :显示有哪些终端登录
who am i : 显示当前终端是哪一个
tty : 显示当前终端的设备文件
chvt : 切换虚拟终端 chvt 2 等同于快捷键 (ctrl + alt + f2) ,注意:在图形界面不行
last : 显示每个终端的登录时间和持续时间等信息