Ubuntu下使用sysv-rc-conf管理服务

sysv-rc-conf简介


sysv-rc-conf是一个强大的服务管理程序,群众的意见是sysv-rc-conf比chkconfig、rcconf好用。

背景知识


Ubuntu运行级别


Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作。

运行级别(Runlevel)指的是Unix或者Linux等类Unix操作系统下不同的运行模式。

运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多。

例如在大多数linux操作系统下一共有如下6个典型的运行级别:

0 停机

1 单用户,Does not configure network interfaces, start daemons, or allow non-root logins

2 多用户,无网络连接 Does not configure network interfaces or start daemons

3 多用户,启动网络连接 Starts the system normally.

4 用户自定义

5 多用户带图形界面

6 重启

查看当前系统的运行级别可以使用命令runlevel

runlevel

切换运行级别,执行命令:

init [0123456Ss]

( 即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:用 init 0 命令关机;用 init 6 命令重新启动。)

Linux 系统主要启动步骤


1. 读取 MBR 的信息,启动 Boot Manager
        Windows 使用 NTLDR 作为 Boot Manager,如果您的系统中安装多个
        版本的 Windows,您就需要在 NTLDR 中选择您要进入的系统。
        Linux 通常使用功能强大,配置灵活的 GRUB 作为 Boot Manager。
2. 加载系统内核,启动 init 进程
        init 进程是 Linux 的根进程,所有的系统进程都是它的子进程。
3. init 进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,
   按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启
   动,并指向一个系统中的程序。
        通常情况下, /etc/rcS.d/ 目录下的启动脚本首先被执行,然后是
        /etc/rcN.d/ 目录。例如您设定的运行级别为 3,那么它对应的启动
        目录为 /etc/rc3.d/ 。
4. 根据 /etc/rcS.d/ 文件夹中对应的脚本启动 Xwindow 服务器 xorg
        Xwindow 为 Linux 下的图形用户界面系统。
5. 启动登录管理器,等待用户登录
        Ubuntu 系统默认使用 GDM 作为登录管理器,您在登录管理器界面中
        输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/
        文件夹中找到一个名为 S13gdm 的链接)

Ubunto中的运行级别


在Debian Linux中2-5这四个运行级别都集中在级别2上。这个级别也是系统预设的正常运行级别。

(注:对于这些运行级别我们不必太过纠结与到底什么意思,只需要知道在Debian/Ubuntu(Ubuntu是Debian的分支)Linux中默认都是在级别(Runlevel)2启动的)

在Debian Linux中,下列路径对应不同的运行级别。当系统启动时,通过其中的脚本文件来启动相应的服务。
/etc/rc0.d Run level 0
/etc/rc1.d Run level 1
/etc/rc2.d Run level 2
/etc/rc3.d Run level 3
/etc/rc4.d Run level 4
/etc/rc5.d Run level 5
/etc/rc6.d Run level 6
下面我们去/etc/目录下寻找这些目录,在终端中输入

ls /etc/rc*

Ubuntu下使用sysv-rc-conf管理服务

对于以K开头的文件,系统将终止对应的服务;
对于以S开头的文件,系统将启动对应的服务;

现在对于Debian/Ubuntu Linux的启动过程大家应该有所了解,总结一下:

在/etc/rc0.d~rc6.d目录下存放的分别是运行在0~6个运行级时要启动的服务有关的文件,由于Ubuntu默认是在runlevel 2启动的,那么我们之需要修改rc2.d中的文件,从而禁止某些服务启动,例如apache2

回顾刚才/etc/rc2.d目录下的文件可以发现与apache2有关的文件是S91apache2,

我们查看以下apache的文件属性

Ubuntu下使用sysv-rc-conf管理服务

而之前简单介绍过以S开头的文件,系统将启动对应的服务。

查找以下apache在其他运行级别下的状态

Ubuntu下使用sysv-rc-conf管理服务

我们会发现apache在运行级别2,3,4之下都是开机启动
所以我们要做的是把S91apache2修改成以K******,但是我们并不知道应该修改成多少,这里我们需要借助一个管理工具进行管理,即sysv-rc-conf

安装sysv-rc-conf


在Ubuntu下用apt-get安装,非常简单

sudo apt-get install sysv-rc-conf

运行

sudo sysv-rc-conf

Ubuntu下使用sysv-rc-conf管理服务

第一行service后面是运行级别,有1,2,3,4,5,0,6,S,与之前介绍的运行级别基本符合,最后一项这里不做介绍

图中打X的即表示运行在对应Runlevel时开机启动的服务,这里我们可以看到apache2在Runlevel2,3,4,均为开机启动,

对应到之前/etc/rc2.d~/etc/rc5.d目录下均为S91apache2文件,再次验证了之前的内容

将光标移动到apache2那行的第2列,按空格进行将启动项反选
按q退出之后配置即完成。
现在我们再来看一下/etc/rc2.d/目录下的内容

ls /etc/rc2.d

现在已经出现了K09apache2文件,而之前的S91apache2文件不在了,到这里配置成功。

Ubuntu下使用sysv-rc-conf管理服务

重启之后查看apache服务运行状态

service apache2 status

Ubuntu下使用sysv-rc-conf管理服务

常见的系统服务信息