5.7 虚拟控制台

Linux提供了虚拟控制台的功能,一组终端设备共享PC电脑的屏幕、键盘和鼠标。通常情况下,一个Linux安装将配置8个或12个虚拟控制台。虚拟控制台通过字符设备文件/dev/ttyN使用,其中N代表一个数字,从1开始。

如果使用字符界面登录Linux系统,在Linux启动并运行后,你首先会看到一个login提示符,在输入用户名和密码登录后,你所使用的终端设备就是系统中的第一个虚拟控制台,即终端设备/dev/tty1。

使用命令who和ps,你即可看到目前登录进系统的用户,以及在这个虚拟控制台上运行的shell和执行的程序:

5.7 虚拟控制台 - 图1

5.7 虚拟控制台 - 图2

你可以看到用户neil已登录进系统,并在虚拟控制台/dev/tty1上运行程序emacs。

Linux系统通常在前6个虚拟控制台上运行一个getty进程,这样用户即可用同一个屏幕、键盘和鼠标在6个不同的虚拟控制台上登录。你可以用ps命令看到getty进程:

5.7 虚拟控制台 - 图3

你可以看到,SuSE Linux系统默认的getty程序mingetty运行在另外5个虚拟控制台上,并等待用户的登录。

你可以通过一个特殊的组合键Ctrl+Alt+F<N>在不同的虚拟控制台之间进行切换,其中N是你希望切换到的虚拟控制台所对应的数字。例如,如果想切换到第2个虚拟控制台,你就按下组合键Alt+Ctrl+F2,按下组合键Ctrl+Alt+F1将返回到第一个虚拟控制台。(注意:当在字符界面而不是图形界面进行虚拟控制台的切换时,需要使用组合键Alt+F<N>(3)。)

如果Linux系统使用的是图形登录界面,例如通过startx程序或通过视窗管理器xdm,X视窗系统将使用第一个未使用的虚拟控制台,通常是/dev/tty7。在使用X视窗系统时,你可以用组合键Ctrl+Alt+F<N>切换到字符控制台,用组合键Ctrl+Alt+F7切换回X视窗系统。

你可以同时在Linux系统上运行多个X视窗会话,如下所示:

5.7 虚拟控制台 - 图4

Linux将在下一个未使用的虚拟控制台上启动X服务器,在此例中,下一个未使用的控制台是/dev/tty8,然后,你即可用组合键Ctrl+Alt+F8和Ctrl+Alt+F7在两个虚拟控制台之间进行切换。

在其他方面,虚拟控制台的行为都与普通硬件终端一样。如果一个进程拥有正确的权限,它即可打开一个虚拟控制台,采用与读写普通硬件终端一样的方式对其进行读写。