有这么多虚拟控制台的原因是什么?
如果有一个用于防止 GUI 崩溃,我可以理解,但除了默认的之外还有 6 个?它们是干什么用的?除了 GUI 冻结时,我甚至看不到它们中的任何一个的用处。
答案1
简短回答:为什么不呢?(请露出微笑)
更长的一个:我想这主要是历史问题。我启动的第一个 Linux 中配置了 6 个虚拟控制台,getty
支持 VC,我真的忘了是什么时候了(我想是 1990 年左右)。然后当你启动图形环境时(手动,和startx
)它在第一个免费 VC 上自动打开,恰好是 #7。当时我仍然在 VC 上完成大部分工作:编辑器速度更快,有时我使用的 VC 比标准的六个还要多,而且我的笔记本电脑并不是一个图形怪物...
例如,我曾经运行三个编辑器(一个程序、它的输入数据、一个描述它的 TeX 文件)、一个 VC 用于编译、另一个用于阅读手册,还有一个通过 telnet 连接到我的邮件服务器。
我怀疑仍然使用六个虚拟控制台的理由是让每个人都在 #7 上使用图形 VC,这样你就可以在手册上写“ Ctrl-Alt-F7
”而不是“第一个免费的 VC 在Ctrl-Alt-Fx
哪里 ”。x
顺便提一下,你可以(我想——从未尝试过)减少 VC。只需这样做
sudo bash -c "echo 'manual' >> /etc/init/tty6.override"
停止 VC#6,遵循新贵手册。
答案2
根据 Unix 哲学,所有/dev/tty*
条目都被称为。它们充当用户和实际设备之间的链接,但它们的用途可能略有不同。device file
虚拟控制台如何分配
在内核版本 1.1.54 之前,虚拟控制台的数量已编译到内核中(在 tty.h 中:#define NR_CONSOLES 8),可以通过编辑和重新编译进行更改。从版本 1.1.54 开始,虚拟控制台会在需要时即时创建。
在 systemd 之前的系统中,动态创建是通过/etc/default/console-setup
变量来控制的ACTIVE_CONSOLES
。从控制台设置(5)手册:
ACTIVE_CONSOLES 指定要配置的虚拟终端的 /dev 中的设备文件。文件名允许使用通配符 (*、?)。在 Linux 上,通常可以将其设置为 /dev/tty[1-6],在 FreeBSD 上,合理的值为 /dev/ttyv[0-8]。您还可以为该变量分配特殊值 guess。这将导致 setupcon(1) 尝试通过查看配置文件(例如 /etc/inittab 和 /etc/ttys)来猜测活动的虚拟控制台。这种猜测并不总是可靠的。
Systemd 配置依赖于/etc/systemd/logind.conf
变量NAutoVTs
。引用自logind.conf 文档
NAutoVTs= 取正整数。配置默认分配多少个虚拟终端 (VT),当切换到这些虚拟终端并且之前未使用时,将自动生成“autovt”服务。这些服务从模板单元实例化[电子邮件保护]对于相应的 VT TTY 名称,例如,[电子邮件保护]。 默认情况下,[电子邮件保护]链接到[电子邮件保护]换句话说,当用户切换到未使用的虚拟终端时,登录提示会动态启动。因此,此参数控制 VT 上有多少个可用的登录“getty”。如果某个 VT 已被其他子系统使用(例如,图形登录),则不会尝试这种激活。请注意,在 ReserveVT= 中配置的 VT 始终会受到这种激活的影响,即使它不是使用 NAutoVTs= 指令配置的 VT 之一。默认为 6。设置为 0 时,将禁用“autovt”服务的自动生成。
减少适合您环境的变量并重新启动将有助于减少 VT 的数量。可以通过以下命令手动删除这些设备:
sudo bash -c 'for num in $(seq 10 63 ) ; do MAKEDEV -v -d "tty$num" ; done'
然而,这有点毫无意义——设备文件不占用任何空间,也不会影响系统性能。
也可以看看https://askubuntu.com/a/27975/295286
虚拟控制台一般信息
诸如 之类的设备文件/dev/tty123
可用于通过常规 shell 与系统交互。这些是虚拟终端。Ubuntu 系统默认配置为打开 TTY 1 到 6,但可以手动打开更多,例如:
sudo openvt -c 9 -s "bash"
这将以bash
root 身份在 /dev/tty9 上打开并立即将您切换到该 TTY(如果在本地终端上完成,但如果您通过远程ssh
会话执行此操作,则可能需要使用chvt 9
,其中 9/dev/tty9
在本例中)。要以非 root 身份执行相同操作sudo
,您必须更改要打开的 tty 的所有权。例如,
$ sudo chown admin_user: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 个命令(可能是服务器),并让它们运行,同时以 63 个命令运行。如今,它可能不那么必要了。
默认情况下会创建多个设备文件。活动设备文件为 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
,至少可以看到该终端的最大行数。
答案3
为什么不多呢?在一个系统中运行top
或htop
(提供 CPU/内存使用情况静态数据),ssh
在 2 或 3 个系统中运行其他系统,在另一个系统中运行一些自动化任务,保留一个以防万一,在另外几个系统中登录多个用户,cmatrix
在一个系统中运行,在另一个系统中启动 GUI -
startx -- :1
(有些图形有错误)
http://mostlylinux.wordpress.com/troubleshooting/ttysessions/
当您真正开始使用此功能时,7 个 tty(第七个是默认的)似乎太少了 - 而且您可以添加更多。
减少数量:我怎样才能减少 TTY 的数量?
答案4
实用性是真实存在的。在真正的多用户 Linux 系统中,可以同时运行多个程序,如果每个程序都在自己的虚拟终端中运行,您可以随时查看每个程序。登录每个程序时,如果需要,您可以以不同的用户身份登录。现在,当然,许多人都是以单用户视角来使用 Linux,但由于 Linux 天生就是多用户的,因此从未放弃过这种能力。