2. 运行级别

与系统启动相关的全部文件都存放在 /etc/rc.d 目录。这是该目录的文件列表:

$ ls /etc/rc.d
init.d/  rc0.d/  rc2.d/  rc4.d/  rc6.d/            rc.local*    rc.sysinit*
rc*      rc1.d/  rc3.d/  rc5.d/  rc.alsa_default*  rc.modules*

和我们先前介绍的一样,系统运行的第一个文件就是 rc.sysinit。它的责任是设置计算机的基本配置:键盘类型、特定设备的配置、文件系统检查,等等。

然后会运行 rc 脚本,并将需要的运行级别作为参数。我们在上面已经看到过了,运行级别不过只是一个整数,而且对每个已定义的运行级别 <x>,必定有一个与其对应的 rc<x>.d 目录。在一个典型的 Mandrakelinux 安装中,您将会看到六个运行级别:

现在,让我们来看一下 rc5.d 目录中的内容:

$ls rc5.d
K59dund@       S12syslog@   S20xfs@         S34mDNSResponder@  S90crond@
K59hidd@       S13partmon@  S24messagebus@  S40atd@            S95kheader@
K59pand@       S14hplip@    S25bluetooth@   S56ntpd@           S99local@
S01udev@       S15cups@     S25haldaemon@   S56rawdevices@
S05harddrake@  S15mdadm@    S25netfs@       S75keytable@
S10network@    S17alsa@     S30dm@          S80postfix@
S12pcscd@      S18sound@    S33nifd@        S85numlock@

正如您看到的,此目录中的全部文件都是符号链接,而且它们的文件名格式还十分规范。一般的格式为:

<S|K><顺序><服务名>

S 代表启动(Start)服务,K 代表杀死(Kill) (停止)服务。脚本会按照增序逐个运行,如果两个脚本的编号相同,那么就会按照字母的升序运行。我们还可以看到,每个符号链接都指向 /etc/rc.d/init.d 目录中的给定脚本(除了负责控制某项特定服务的 local 脚本)。

当系统进入给定的运行级别时,系统会先按顺序运行 K 链接:rc 命令会查找链接指向的目标,然后带加上单个参数 stop 来调用相应的脚本。然后,再按相同的方法运行 S 脚本,只是参数换成了 start

现在,我们暂且不论脚本本身的功能。可以知道,当系统进入运行级别 5 时,会首先运行 K15dund 命令(即 /etc/rc.d/init.d/dund stop)。然后依次运行 K59hiddK59pand 等等,直至运行完最后一个 K 脚本。接下来,再运行全部 S 脚本:先是 S01udev,也就是 /etc/rc.d/init.d/udev start,依此类推。

有了这些基本知识,您就可以在几分钟之内创建您自己的运行级别(比如使用运行级别 4),或者通过删除相应的符号链接来禁止启动或停止特定的服务。您还可以使用很多界面友好的程序来完成这一功能,比如使用图形界面的 DrakXServices(参看初学者指南中的用 DrakXServices 配置启动服务)和文本模式下的 chkconfig

[提示]提示

您还可以使用 chkconfig 命令来列出、添加或删除特定运行级别中的脚本。参见 chkconfig(8)