linux命令tty的简单介绍

在UNIX或Linux中TTY是什么意思TTY设备包括虚拟控制台,串口以及伪终端设备 。
TTY是TeleTYpe的一个老缩写 。Teletypes , 或者teletypewriters , 原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大 。之后,当计算机只能以批处理方式运行时(当时穿孔卡片阅读器是唯一一种使程序载入运行的方式),电传打字机成为唯一能够被使用的“实时”输入/输出设备 。最终,电传打字机被键盘和显示器终端所取代,但在终端或TTY接插的地方,操作系统仍然需要一个程序来监视串行端口 。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口 。
在Linux中,TTY也许是跟终端有关系的最为混乱的术语 。TTY是TeleTYpe的一个老缩写 。Teletypes , 或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大 。之后 , 当计算机只能以批处理方式运行时(当时穿孔卡片阅读器是唯一一种使程序载入运行的方式),电传打字机成为唯一能够被使用的“实时”输入/输出设备 。最终,电传打字机被键盘和显示器终端所取代,但在终端或TTY接插的地方 , 操作系统仍然需要一个程序来监视串行端口 。一个getty“Get TTY”的处理过程是:一个程序监视物理的TTY/终端接口 。对一个虚拟网络服务器(VNC)来说,一个伪装的TTY(Pseudo-TTY,即假冒的TTY,也叫做“PTY”)是等价的终端 。当你运行一个xterm(终端仿真程序)或GNOME终端程序时,PTY对虚拟的用户或者如xterm一样的伪终端来说,就像是一个TTY在运行 。“Pseudo”的意思是“duplicating in a fake way”(用伪造的方法复制),它相比“virtual”或“emulated”更能真实的说明问题 。而在的计算中,它却处于被放弃的阶段 。
tty也是一个Unix命令,用来给出当前终端设备的名称 。
终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备 。
在Linux系统的设备特殊文件目录/dev/下 , 终端特殊设备文件一般有以下几种:
串行端口
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备 。计算机把每个串行端口都看作是一个字符设备 。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端 。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等 。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可 。例如,在命令行提示符下键入:echo test/dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上 。
伪终端
伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备 , 对master的操作会反映到slave上) 。
例如/dev/ptyp3和/dev/ttyp3(或者在设备文件系统中分别是/dev/pty /m3和 /dev/pty/s3) 。它们与实际物理设备并不直接相关 。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面 。而ttyp3则是另一个程序用于读写操作的逻辑设备 。telnet主机A就是通过“伪终端”与主机A的登录程序进行通信 。
控制终端
如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件 。可以使用命令”ps –ax”来查看进程与哪个控制终端相连 。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0) 。使用命令”tty”可以查看它具体对应哪个实际终端设备 。/dev/tty有些类似于到实际所使用终端设备的一个联接 。

推荐阅读