tty不仅仅是输入/输出设备。它们还充当会话的控制终端,完成特殊的工作,例如发送信号(Ctrl + C)。/ dev / ttyNN是虚拟控制台,在监视器上全屏显示。
终端从/ dev / tty1开始。通常,您可以通过按Ctrl + Alt + Fn键切换到这些控制台。
例如,Ctrl + Alt + F1会将您带到第一个虚拟终端。如今,大多数Linux发行版都从tty1运行X服务器。因此,按Ctrl + Alt + F1可能不会起作用。
$ ps ax | grep Xorg | grep -v grep
1504 tty1 Ss+ 44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1
Ctrl + Alt + F2将带您到第二个终端。通常,发行版在虚拟终端上运行登录程序(agetty)。
$ ps ax | grep tty2 | grep -v grep
31865 tty2 Ss+ 0:00 /sbin/agetty tty2 38400
登录程序为您提供登录提示,并允许您使用用户名/密码登录。初始化脚本确定将在哪里运行所有登录程序。因此,视乎您是否会看到登录提示而定,例如tty9。要返回到GUI界面,请按Ctrl + Alt + F1(如上述示例输出)。
/ dev / tty0是一个特殊的设备,它指向当前终端。因此,无论您从何处(任何虚拟控制台)运行它,从tty0读取/写入到tty0的任何内容都将到达您的当前终端。
“ ps ax”中的第二列还提供了程序的控制终端。对于某些程序,例如守护程序,您可能会看到列为“?”,这意味着它们未绑定到终端。
/ dev / pts / 0等是伪终端设备,未连接到系统显示屏。例如,当您打开gnome终端或任何其他GUI终端时获得的终端。这些是基于客户端-服务器的方法,其中客户端将被导出到程序,例如bash。程序发送到伪终端的数据被发送到“服务器”端(通常由另一个程序监视,例如gnome-terminal)。控制过程(服务器端)确定需要发送到终端的内容,最终由客户端看到。这些设备可帮助您打开多个“ GUI终端”,而对系统没有任何限制,同时仍提供相同的旧终端,如控件(ioctl(),颜色设置,发送信号[Ctrl + C]等)。