Wednesday, August 23, 2006

Linux Runlevel -- Linux 运行级别

在 Ubuntu 中,系统的运行级别 Runlevel 设置与普通的其它 Linux 的设置不一样,当你修改 /etc/inittab 文件中的 runlevel 为 3 时,Unbuntu 并不是将你带入多用户的虚拟终端,而是同 runlevel=2 时一样地进入到图形界面。这是怎么一回事呢?

原来,在看过 /etc/rc.d 文件后才晓得,系统是通过一系列的脚本来启动进入 Linux 的。当在 /etc/inittab 文件中将 runlevel 设置为 3 时,系统将执行所有在 /etc/rc3.d 目录下的脚本;当设置为 2 时,系统将执行所有在 /etc/rc2.d 目录下的脚本…

/etc/rc<运行级别>.d 目录中的文件一般都是符号连接,指向 /etc/init.d 目录中服务型程序,如 apache, sendmail。而且它们都是以 S 或 K 开头,后面跟上两位数字,再跟上程序名。这里的 S 是 Start,即运行某项服务,而 K 是 Kill,即杀死某项服务。因此当系统转入某个运行级别时,它将运行相应的服务程序,遇到 S 开头的服务时启动它,遇到 K 开头的服务时则杀死它。而数字则表示这些程序的运行优先级,数字小的先执行,数字大的后执行。(这是显然的,当文件首字母一致时,文件又以升序排列,那么数字小的自然排在了前头。)

在终端中,我们可以键入
init <运行级别>
来切换运行级别来达到某种目的,如输入 init 0 使系统关机,输入 init 6 使系统重启。

Ubuntu 默认的 /etc/rc3.d 中有个名为 S20gdm 的符号链接文件,所以当我们把 /etc/inittab 中的 runlevel 设置为 3 时,系统依然会运行图形登录界面 GDM 。因此如果我们将 S20gdm 文件删除掉,再重启,会发现我们进入的不再是图形界面了。

依样画葫芦,如果想在启动系统的时候即启动 apache,我们只需在需要的 rc?.d 目录中加入首字母为 S 的符号链接,使其指向 /etc/init.d/apache 就可以了。

No comments: