为什么会有那么多虚拟控制台?


26

有这么多虚拟控制台的原因是什么?

我想知道是否有一种情况可以防止GUI崩溃,但是除了默认值以外还有6种?他们是干什么的?除了GUI冻结时,我什至看不到任何其他用法。


我同意Mateo在下面的回答。为什么不更多?我发现自己已经打开了所有6个功能,并希望有更多功能(并且GUI通常在登录屏幕上保持“关闭”状态)。
haziz

Answers:


16

简短的回答:为什么不呢?(请暗示微笑)

更冗长的是:我想这主要是历史性的事情。getty我在使用VC支持启动的第一个Linux中配置了6个虚拟控制台,但我真的忘了什么时候(我认为是1990年左右)。然后,当你启动图形环境(用手,startx),它在第一个可用VC,正好是7号开幕本身。而且我当时仍在从事VC的大部分工作:编辑器的速度要快得多,有时我使用的VC比标准VC还要多,而且我的笔记本电脑也不是真正的图形怪兽 ...

例如,我曾经运行三个编辑器(一个程序,其输入数据,一个描述它的TeX文件),一个用于编译的VC,另一个用于阅读手册的VC,以及另一个通过telnet连接到我的邮件服务器的VC。

我怀疑仍然使用六个虚拟控制台的理由是让每个人都能在#7上使用图形VC,因此您可以在手册中写“ Ctrl-Alt-F7”,而不是“ 第一个免费VC Ctrl-Alt-Fx在哪里 x”。

作为附带说明,您可以(我想---从未尝试过)修整VC。简单地做

sudo bash -c "echo 'manual' >> /etc/init/tty6.override"

按照新手手册停止VC#6 。


可以减少活动 tty的数量,但不能减少设备文件本身的数量(除非人们想重新编译内核)。请在下面查看我的答案
Sergiy Kolodyazhnyy

9

为什么不更多呢?以2或3的身份运行到一个系统中(一个tophtop多个),ssh对另一个系统运行,在另一个系统中运行一些自动化的任务,保持一个免费状态,以防万一,再登录多个用户,再运行cmatrix一个,启动GUI与-

startx -- :1

(某些图形存在此错误)

http://mostlylinux.wordpress.com/troubleshooting/ttysessions/

当您真正开始使用此功能时,7 tty(默认是第七个)似乎很少,您可以添加更多。

减少数量:如何减少TTY数量?


8

根据Unix哲学,所有/dev/tty*条目都称为device file。它们充当用户和实际设备之间的链接,但是它们的用途可能略有不同。

虚拟控制台

诸如设备文件之类的文件/dev/tty123可用于通过常规外壳与系统进行交互。默认情况下,Ubuntu系统配置为打开TTY 1到6,但是一个可以手动打开,例如:

sudo openvt -c 9 -s "bash"

这将bash在/ dev / tty9上以root身份打开,并立即将您切换到该TTY(如果在本地终端上完成,但是如果通过远程ssh会话这样做,则在这种情况下,您可能需要使用chvt 9/dev/tty9在此示例中为9 )。要在没有sudo非root用户的情况下执行相同的操作,您将必须更改要打开的tty的所有权。例如,

$ sudo chown xieerqi:tty /dev/tty8 
$ openvt -c 8 -l 

这将使我使用tty8上的默认shell登录。但是,在我的测试中,这似乎仅通过TTY起作用,因此,如果您通过终端仿真器进行此操作,则可能无法正常工作(我遇到了Couldn't get a file descriptor referring to the console 错误,仅从sudo openvt -c 8 -l仿真器为我工作)

从历史的角度来看,在创建所有高级终端多路复用器之前,这是一个有用的功能-您可以在这些控制台上生成多达62个命令(可能是服务器),并让它们在63rd上运行时运行。如今,它可能不是必需的。

默认情况下创建了多个设备文件。活动的是1到6,但是可以通过编辑来更改其编号/etc/default/console-setup,特别是这一部分:

# Setup these consoles.  Most people do not need to change this.
ACTIVE_CONSOLES="/dev/tty[1-6]"

ttyS *设备

这些是用于串行控制台(又称为UART,也称为RS-232)的设备文件。在过去,许多计算机系统都带有串行端口。如今,这通常可以在服务器类型的计算机上找到。多个ttyS设备可用于RS-232集线器,该集线器允许通过USB或以太网管理多个设备的连接。

对于电气工程师(这是我在大学主修的专业),我们使用串行端口与微控制器和开发板(例如Arduino)进行交互。单端口计算机(例如Raspberry Pi)也可以使用它。如今,使用USB转UART电缆建立串行连接,并通过screen如下方式在终端中打开控制台:

screen /dev/ttyUSB0 115200 # the number is baud rate or speed

注意,Arduino和Raspberry将创建自己的设备文件以进行串行连接,/dev/ttyUSB0或者/dev/ttyACM0

vcs *设备

根据man vcs这些是控制台存储设备。简而言之,如果您这样做,sudo cat /dev/vcs1您将看到中的屏幕上的内容/dev/tty1,至少到该终端中的最大行数为止。

减少控制台数量

不更改tty.h库并重新编译内核(参考另一个),就不可能减少实际设备文件的数量。但是,可以通过以下命令手动删除这些设备:

sudo bash -c 'for num in $(seq 10 63 ) ; do MAKEDEV -v -d "tty$num" ; done'

但是,这一点没有意义-设备文件不占用任何空间,也不影响系统性能。


评论不作进一步讨论;此对话已转移至聊天

6

实用性是真实的。在真正的多用户Linux系统中,可以同时运行多个程序,如果每个程序都在自己的虚拟终端中运行,则可以进行检查。登录到每个用户时,可以根据需要以不同的用户身份登录。现在,理所当然的是,许多人从单用户的角度来看待Linux,但是由于Linux是天生的多用户,所以这种能力从未被放弃。

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.