在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本就没有了,如果想继续使用chkconfig命令,只好自己apt-get install下了。
1、运行级别:
Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级程序和服务都不同,所要完成的工作和要达到的目的也不同,系统可以在这些运行级之间进行切换,来完成不同的工作。
运行级别等级:
在这里需要注意的是,在Debian下(ubuntu其中之一)level2~5是没有任何区别的。
使用以下命令,可以查看当前的运行级别:
使用以下命令,可以切换运行级别:
2、启动步骤:
update-rc.d是一个Perl脚本,是用来自动升级System V类型初始化脚本,简单来说就是哪些东西是你想要在系统引导初始化的时候运行的,哪些是希望在关机或重启时候停止的,都可以用它来帮你设置。这些脚本的连接位于/etc/rcX.d/下(X代表0~6),对应脚本位于/etc/init.d/下。
1、设置启动项:
update-rc.d <serviceName> start <order> <runlevel>
2、设置停止项:
update-rc.d <serviceName> stop <order> <runlevel>
设置启动和停止可以写在一起,例如:
3、从所有的运行级别中删除制定的启动项
update-rc.d -f <serviceName> remove
根据上面的介绍,如何将一个软件安装为服务也就比较清楚了,那就是在/etc/init.d添加一个服务的启动脚本,然后在需要启动服务的对应级别中/etc/rc[0~6].d按照文件名格式添加一个指向/etc/init.d的脚本符号链接。
以apache2为例,默认情况下,apache2编译安装在/usr/local/apache2,apache2的服务器启动脚本是/usr/local/apache2/bin/apachectl,那么安装服务就是要把此apachectl拷贝到需要启动apache2服务器的运行级别对应的/etc/rc[0~6].d目录下,一般来说ubuntu的运行级别为2,所以也就是拷贝到/etc/rc2.d下。
这时如果想要停止或重启apache2也可以使用以下命令:
同样我们也可以使用defaults参数来向运行级别2、3、4、5启动服务,也就是start,并同时向运行级别0、1、6添加关闭命令,即stop。
rc.local
在/etc/rc[2~5].d目录下都会有一个S99rc.local脚本,这是一个指向/etc/init.d/rc.local的链接,可以看出,在正常的2~5级别启动的最后都会调用这个rc.local脚本。而/etc/init.d/rc.local中又会检查是否存在/etc/rc.local,并运行。因此,我们也可以在/etc/rc.local中写入代码,来随系统启动某些程序,实现类似服务的功能。
综上,我们可以看到,系统的启动调用过程如下:
内核 -> /etc/init/rc-sysint.conf -> /etc/inittab -> etc/init.d/rc -> /etc/rc[0~6].d -> /etc/init.d/rc.local ->/etc/rc.local
虽然在ubuntu后来的版本中默认已经没有了inittab文件,但我可以自行添加。
以上的启动过程,并不是代表所有,以Redhat系列的CentOS5为例:
内核 -> /etc/inittab -> /etc/ rc.sysinit (/etc/rc.d/rc.sysinit) -> /etc/rc[?].d (/etc/rc.d/rc[?].d) -> /etc/rc.local(/etc/rc.d/rc.local)