Linux系统的终端主要包括控制台终端、控制终端、串口终端、伪终端、虚拟终端。
1、控制台终端(/dev/console)
在Unix系统中,计算机显示器通常被称为控制台终端。Console与虚拟终端相关联,内核将信息送到控制台终端上(/dev/console), 通过与console相关联的虚拟终端将信息显示到屏幕上。不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。你可以登录到不同的虚拟终端上去,因而可以让系统同时有几个不同的会话期存在。只有系统或超级用户root可以向 /dev/tty0进行写操作。
2、控制终端(/dev/tty)
控制终端是一个应用程序的概念。对于登录shell来讲,/dev/tty就是我们使用的终端, 使用命令”tty”可以查看它具体对应哪个实际终端设备。dev/tty有些类似于到实际所使用终端设备的一个联接。
3、串口终端(/dev/ttyS#)
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。这些串行端口对应的设备文件名是在Linux的/dev/ttyS#
4、伪终端(/dev/pty/#)
伪终端功能类似于终端的设备,但它不与任何终端硬件连接。伪终端通常为通过x-woindow ,SSH或telnet登录到linux主机上所使用的终端。伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备, 对master的操作会反映到slave上)。
5、虚拟终端(/dev/tty#)
虚拟终端为Linux通过Ctrl-Alt-F[1-6]打开的终端。
由于在很多朋友对终端的概念一直不是很清楚,因此写了这个FAQ,希望能够帮助大家理解这些概念。不妥之处,还请大家来信指出。
Q:/dev/tty是什么?
A:tty设备包括虚拟控制台,串口以及伪终端设备;/dev/tty代表当前tty设备,在当前的终端中输入 echo "hello"> /dev/tty ,都会直接显示在当前的终端中。
Q:/dev/ttyS*是什么?
A:/dev/ttyS*是串行终端设备。
Q:/dev/pty*是什么?
A:/dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该pty从设备)。
Q:/dev/tty0与/dev/tty1 …/dev/tty63是什么?它们之间有什么区别?
A:/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2
Q:如何确定当前所在的终端(或控制台)?
A:使用tty命令可以确定当前的终端或者控制台。
Q:/dev/console是到/dev/tty0的符号链接吗?
A: 目前的大多数文本中都称/dev/console是到/dev/tty0的链接(包括《Linux内核源代码情景分析》),但是这样说是不确切的。根据内核文档,在2.1.71之前,/dev/console根据不同系统的设定可以链接到/dev/tty0或者其他tty*上,在2.1.71版本之后则完全由内核控制。目前,只有在单用户模式下可以登录/dev/console(可以在单用户模式下输入tty命令进行确认)。
Q:/dev/tty0与/dev/fb*有什么区别?
A: 在Framebuffer设备没有启用的系统中,可以使用/dev/tty0访问显卡。
Q:关于终端和控制台的区别可以参考哪些文本
A: 可以参考内核文档中的Documents/devices.txt 中关于”TERMINAL DEVICES” 的章节。
原创文章,作者:lyx,如若转载,请注明出处:http://www.178linux.com/51450