为什么会有这么多虚拟终端设备?


11

我读过《高级Linux编程》一书,其中提到了虚拟终端,如果我正确理解的话,它是Linux特定的功能(Unix中没有),允许在非X11系统中使用多个登录控制台。您通过按ALT-F2键来创建虚拟终端。我正在运行Linux Mint,并且在我的/ dev文件夹中,尽管我看到很多tty设备,但我不知道它们的用途。这是grepped的输出:

crw-rw-rw-  1 root tty       5,   0 Jan  2 19:45 tty
crw--w----  1 root tty       4,   0 Jan  2 19:10 tty0
crw-rw----  1 root tty       4,   1 Jan  2 19:10 tty1
crw--w----  1 root tty       4,  10 Jan  2 19:10 tty10
crw--w----  1 root tty       4,  11 Jan  2 19:10 tty11
crw--w----  1 root tty       4,  12 Jan  2 19:10 tty12
crw--w----  1 root tty       4,  13 Jan  2 19:10 tty13
crw--w----  1 root tty       4,  14 Jan  2 19:10 tty14
crw--w----  1 root tty       4,  15 Jan  2 19:10 tty15
crw--w----  1 root tty       4,  16 Jan  2 19:10 tty16
crw--w----  1 root tty       4,  17 Jan  2 19:10 tty17
crw--w----  1 root tty       4,  18 Jan  2 19:10 tty18
crw--w----  1 root tty       4,  19 Jan  2 19:10 tty19
crw-rw----  1 root tty       4,   2 Jan  2 19:10 tty2
crw--w----  1 root tty       4,  20 Jan  2 19:10 tty20
crw--w----  1 root tty       4,  21 Jan  2 19:10 tty21
crw--w----  1 root tty       4,  22 Jan  2 19:10 tty22
crw--w----  1 root tty       4,  23 Jan  2 19:10 tty23
crw--w----  1 root tty       4,  24 Jan  2 19:10 tty24
crw--w----  1 root tty       4,  25 Jan  2 19:10 tty25
crw--w----  1 root tty       4,  26 Jan  2 19:10 tty26
crw--w----  1 root tty       4,  27 Jan  2 19:10 tty27
crw--w----  1 root tty       4,  28 Jan  2 19:10 tty28
crw--w----  1 root tty       4,  29 Jan  2 19:10 tty29
crw-rw----  1 root tty       4,   3 Jan  2 19:10 tty3
crw--w----  1 root tty       4,  30 Jan  2 19:10 tty30
crw--w----  1 root tty       4,  31 Jan  2 19:10 tty31
crw--w----  1 root tty       4,  32 Jan  2 19:10 tty32
crw--w----  1 root tty       4,  33 Jan  2 19:10 tty33
crw--w----  1 root tty       4,  34 Jan  2 19:10 tty34
crw--w----  1 root tty       4,  35 Jan  2 19:10 tty35
crw--w----  1 root tty       4,  36 Jan  2 19:10 tty36
crw--w----  1 root tty       4,  37 Jan  2 19:10 tty37
crw--w----  1 root tty       4,  38 Jan  2 19:10 tty38
crw--w----  1 root tty       4,  39 Jan  2 19:10 tty39
crw-rw----  1 root tty       4,   4 Jan  2 19:10 tty4
crw--w----  1 root tty       4,  40 Jan  2 19:10 tty40
crw--w----  1 root tty       4,  41 Jan  2 19:10 tty41
crw--w----  1 root tty       4,  42 Jan  2 19:10 tty42
crw--w----  1 root tty       4,  43 Jan  2 19:10 tty43
crw--w----  1 root tty       4,  44 Jan  2 19:10 tty44
crw--w----  1 root tty       4,  45 Jan  2 19:10 tty45
crw--w----  1 root tty       4,  46 Jan  2 19:10 tty46
crw--w----  1 root tty       4,  47 Jan  2 19:10 tty47
crw--w----  1 root tty       4,  48 Jan  2 19:10 tty48
crw--w----  1 root tty       4,  49 Jan  2 19:10 tty49
crw-rw----  1 root tty       4,   5 Jan  2 19:10 tty5
crw--w----  1 root tty       4,  50 Jan  2 19:10 tty50
crw--w----  1 root tty       4,  51 Jan  2 19:10 tty51
crw--w----  1 root tty       4,  52 Jan  2 19:10 tty52
crw--w----  1 root tty       4,  53 Jan  2 19:10 tty53
crw--w----  1 root tty       4,  54 Jan  2 19:10 tty54
crw--w----  1 root tty       4,  55 Jan  2 19:10 tty55
crw--w----  1 root tty       4,  56 Jan  2 19:10 tty56
crw--w----  1 root tty       4,  57 Jan  2 19:10 tty57
crw--w----  1 root tty       4,  58 Jan  2 19:10 tty58
crw--w----  1 root tty       4,  59 Jan  2 19:10 tty59
crw-rw----  1 root tty       4,   6 Jan  2 19:10 tty6
crw--w----  1 root tty       4,  60 Jan  2 19:10 tty60
crw--w----  1 root tty       4,  61 Jan  2 19:10 tty61
crw--w----  1 root tty       4,  62 Jan  2 19:10 tty62
crw--w----  1 root tty       4,  63 Jan  2 19:10 tty63
crw--w----  1 root tty       4,   7 Jan  2 19:10 tty7
crw--w----  1 root tty       4,   8 Jan  2 19:10 tty8
crw--w----  1 root tty       4,   9 Jan  2 19:10 tty9

4
实际上,您不是通过按CTRL-ALT-F1(等等)来创建Linux VT,它们已经存在,只是看不到它们,因为启动时自动调用了显示管理器,然后您以X结尾(令人困惑的是,在tty 7上运行)。看看/etc/inittab,您将看到它是如何工作的。
伊曼纽尔·伯格

Answers:


10

在Linux术语中,这些是专门的虚拟控制台设备。在同一物理设备上支持虚拟控制台并不是Linux独有的(例如,BSD称它们为“硬件终端端口”)。

Linux没有用于按需创建控制台设备的机制。63个控制台并不总是处于活动状态(您需要激活ttyN才能通过(Ctrl+)Alt+ 切换到它FN),但是要激活一个控制台,则需要打开控制台设备(该openvt命令getty与X服务器一样)。因此,设备条目必须一直存在,否则必须手动创建才能使用它。

现代Linux系统(具有udev或devtmpfs)会为系统上存在的每个设备创建设备条目。所有虚拟控制台始终存在(无论它们是否处于活动状态),因此将创建所有条目。大多数用户并不需要那么多-实际上,大多数用户除了运行X的虚拟控制台外什么都看不到。但是有些人这样做,并且需要修补其内核以允许超过63个控制台,因为它们运行带有许多硬件控制台的大型计算机)。


-2

这不是特定于Linux的东西,而且ttys不仅用于虚拟终端。例如,在图形界面中启动xterm时,也会使用它们。如果tty设备更少,那么您将无法使用许多xterm或ssh登录名。


嗯,还想解释一下吗?当您在X下运行xterm时,您不会得到pts,而不是tty?
伊曼纽尔·伯格


好的,我已经阅读了,但是还不清楚。您是否在说,当我启动xterm时,该过程与中的tty设备文件相关联/dev,因此,如果其中的tty设备文件较少,您实际上可能会用完ttys?
伊曼纽尔·伯格

4
实际上,用于X仿真器的设备接口不是tty,而是“伪终端”(pt)。它们由内核动态管理,但是中列出了当前存在的内核/dev/pts/。该tty命令将为您提供当前设备-在X中尝试,然后在VT中尝试。
goldilocks 2013年

2
您将/dev/ttyN旧的/dev/ptyN(虚拟终端,有时也称为虚拟终端)与(虚拟控制台,有时称为虚拟终端)相混淆。Linux现在使用动态分配,/dev/pts/N而不是旧的静态分配/dev/ptyN
吉尔(Gilles)'所以
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.