Linux系统中的终端基本都在/dev目录下,可分为文本命令行模式和图形界面模式。Windows系统中的图形界面是在系统内核空间中的,而Linux系统中的图形界面是作为一个应用程序调用的,所以windows系统中的图形界面是开机启动的,而Linux系统中的图形界面是可以开机不启动的,因为它相当于是一个运行在Linux系统上的一个应用程序而已。
CentOS及RedHat中可通过修改/etc/inittab文件中的id:3:initdefault来更改启动项。如果id是3则启动的是文本命令终端模式,将3改为5则会默认启动图形界面(即Xwindow)模式。inittab是不可执行的文本文件,会在Linux完成内核引导后,被init初始化进程调用,是一个配置文件。文件中id的格式为:id:run-level:action:process,各项之间用冒号隔开,其中某些部分可为空,我的Centos6系统中的inittab文件就只有其中的前面3项,process为空。id标识符唯一,在配置文件中不能重复。run-level指定系统运行级别,通过vi /etc/inittab查看该文件时可看到下图所示的解释:
一共分为7个级别(0~6):
0- halt,即关机,所以在关机的时候也可通过init 0指令来执行,不过这是直接关机,不会提示,建议多用户使用时不要这样用。
1- 单用户模式。单用户模式只有系统管理员进入,管理员可以在这个模式下处理在有登陆用户情况下不能更改的文件。编号1也可以用s代替。
2- 不具备网络文件系统功能的多用户文本命令行模式。用的比较少。
3- 具备网络文件系统功能的多用户文本命令行模式。是最常用的运行模式,也是多数服务器的缺省模式。
4- 保留不用。
5- 具备网络功能的Xwindow模式,初学者可将其设置为缺省模式,系统初始化时直接进入图形化界面,操作比较方便,适合初学者,但是对于常用Linux的用户来说这并不是一个很好的选择,还是应该使用3的模式。
6- 关闭所有运行的进程并重新启动系统。
Action是执行运行的动作,initdefault是系统启动后进入的执行等级,该行不需要指定process。
如果模式启动的是run-level为3的文本命令行模式,可以在登陆后指令startx命令切换到5的Xwindow模式,使用startx -- :1开启第二个Xwindow。在Xwindow模式下可通过Ctrl+Alt+(F1~F6)再回到命令行模式。F1~F6表示6个控制台。startx只可以在没有启动过xwindow时使用,如果已经启动过xwindow,然后回到命令行模式,这时如果还想回到已经启动过的xwindow则不能使用startx,需要使用Ctrl+Alt+F7/F8,这代表两个xwindow控制台。在命令行控制台间相互切换可通过Alt+Fn,例如从命令行控制台1切换到控制台5,则可执行Alt+F5。在真机下这些命令都可正常执行,但是如果是在VM虚拟机中的Linux系统,则会出现问题,因为Ctrl+Alt已经被VM用作了快捷键,所以会冲突。这时可通过Ctrl+Alt+Shift+Fn切换,如果这还不行,则可按住Ctrl+Alt,然后按下Space键,然后放开Space键,再按Fn键即可完成切换,我在我的VM虚拟机的Centos6系统中实验过,能正常切换。
Linux系统中,/dev/ttyn表示控制台终端,即上面所说的文本命令行终端,可通过Alt+Fn相互切换的。当在控制台登陆时,使用的是tty1,这时用who指令可查看到tty1已有用户登陆:
此时再打开一个文本控制台终端并登陆,就会有tty2被使用,依次类推,tty一般可支持6个,及tty1~tty6。tty0代表当前所使用的虚拟终端,系统所产生的信息会发送到这个终端上,相当于是当前所使用终端的一个别名,例如如果当前正在使用tty3,则tty0代表tty3。只有root用户能向/dev/tty0进行写操作。例如可通过ech0 “test” > /dev/tty0向当前使用的终端发送test消息,但是如果不是root用户会提示permission denied。
上面的图中还有3个pts终端,在我的机器上,pts/0和pts/2是两个xwindow控制台,pts/1是通过SSH登录的Xshell终端。此时通过ls /dev/pts查看会出现以下信息:
pts是pty的实现方法,与ptmx配合使用实现pty,而pty就是虚拟终端,即伪终端。Pty是成对的逻辑终端设备,即master和slave设备,对master的操作会反映在slave上。他们与实际物理设备并不直接相关。如果一个程序把ptyp3(master设备)看作是一个串行端口设备,则它对该端口的读/ 写操作会反映在该逻辑终端设备对应的另一个ttyp3(slave设备)上面。而ttyp3则是另一个程序用于读写操作的逻辑设备。
Linux下还有一个终端叫串口终端,即/dev/ttySn。这些终端是使用计算机串行端口连接的终端设备,对应于DOS系统下的COM1~COMn。例如,执行echo test > /dev/ttyS1会把单词test发送到连接在ttyS1端口的设备上。
最后,可通过执行skill -9 xxx清除xxx控制台的所有进程。例如:skill -9 /dev/pts/0则会清除第一个xwindow控制台的所有进程。