为什么Linux中有这么多/ dev / tty?


27

在ubuntu 10.04中,如果我在/ dev下检查,则有超过50个ttys。tty0,tty1,tty2 ...

我了解tty是用于控制台输入/输出的字符设备。

  1. 但是为什么会有这么多呢?像游泳池吗?

  2. / dev / pts / 0,1,2 ...,/ dev / tty和有什么区别?

  3. 如果我打开一个终端,则会在/ dev / pts下创建新的号码。但我不知道何时/ dev / tty?用来。

    即使创建SSH连接,/ dev / tty的数量也相同。

    如果我愿意

    cat /dev/tty0
    

    然后在键盘上输入内容,我会得到相应的输出。为什么会这样呢?


Answers:


25

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]等)。


2
除了在这里问外,应该怎么知道呢?一些手册页?
n611x007 2013年

1
@ n611x007- man /dev/pts是一个好的开始,也man termios请注意,客户端/服务器在pty- ptmpts之间是双向的,其中虚拟终端(如gnome-terminal或xterm)通常连接到主服务器和shell(如bash,从服务器) 。
wulfgarpro 2015年

在我的系统上/dev/tty是当前的控制终端,但是我不知道这是什么/dev/tty0,但是/dev/tty1Linux KMSCON是。并且/dev/tty7是X服务器。
CMCDragonkai

但是,这并不能回答问题。如daehee所述,有64个/ dev / ttyN设备。1-8是虚拟控制台。pty在/ dev / pts下是单独的。例如,/ dev / tty30在什么系统上使用过,如何使用?
Andrew McGuinness

1

我只想澄清这种事情的关系。

首先,/ dev / tty在进程级别,可以是ttyn(tty1,tty2,...), ttySn(ttyS0,ttyS1),pty(pts / 0,pts / 1)等。

/ dev / tty0是当前(前景)虚拟控制台的别名,因此它可以是tty1,tty2等。注意,ttyS0不是别名。这是第一个串行端口。

/ dev / console是系统控制台,它默认指向/ dev / tty0。可以是ttyn,ttySn,ttyUSBn,lpn等。

大致来说,/ dev / tty> / dev / cosole> / dev / tty0


那是某处的报价吗,有参考吗?可就有趣的阅读
Xen2050

@ Xen2050没有,但希望这是很有帮助的tldp.org/HOWTO/Remote-Serial-Console-HOWTO/...
FIRO
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.