Debian 4.0之前的版本不象Redhat等Linux,没有rc.local档,要想让某脚本开机启动,就需要们自己建立rc.local,同时还得设置启动级别,才能有用.


Debian系统定义了0到6共产7个运行级别,分别对应的是/etc/rc0.d .../etc/rc6.d七个目录下的脚本,其中默认的运行级别为5,每级代表的意思如下:


Runlevel 0:关机操作,关闭所有的程式,如果内核支持APM,还可自动关闭主机电源.
Runlevel 1:单用户模式,提供一个root shell和只读的文件系统,该级别用于系统恢复.
Runlevel 2,3,4,5:多用户模式,由用户自行设定.
Runlevel 6:与0级别类似,它是重启电脑.


实例,我们想把/usr/bin/vncserver设置为开机启动,可进行如下操作:
debian:/# touch /etc/init.d/rc.local //在debian的初始目录init.d下建立rc.local档


在rc.local档中写入如下内容:

#!/bin/sh 

 /usr/bin/vncserver 

 debian:/# chmod +x /etc/init.d/rc.local //给予文件可执行权限 

 debian:/# update-rc.d rc.local start 99 2 3 4 5 . stop 01 0 1 6 . //设置启动级别(必须)



如需删除脚本的启动级别可进行如下操作
debian:/# update-rc.d -f rc.local remove


这样,在debian 4.0之前版本设置vncserver的开机启动就算完成.


在Debian 4.0中,我们会发现在/etc/init.d目录下已经有了rc.local档,且启动权限已设置好了。打开该档,清楚该档所要描述的内容是要运行 /etc/rc.local脚本,我们把/usr/bin/vncserver写到/etc/rc.local脚本中EXIT 0的行前就可完成开机启动项添加。


不得不知道的一个东西:使用update-rc.d
Debian 的update-rc.d与RH的chkconfig工具相类似。然而chkconfig是一个二进制程序,而update-rc.d是一个Perl脚本。这些工具有不同的命
令行选项,但是却执行类似的功能。下表列出了update-rc.d的一些用法。如果要查看完整的信息,我们可以查阅相关的和册页。
命令                           功能
update-rc.d -f <service> remove         从所有的运行级别配置目录中是删除指定的服务
update-rc.d <service> start <order> <runlevels>   配置服务在运行级别列表中按指定的顺序启动
update-rc.d <service> stop <order> <runlevels>   配置服务在运行级别列表中指定的顺序停止
update -rc.d与RH的chkconfig之间最大的不同就在于update-rc.d是要设置所以指向/etc/init.d目录下服务脚本的运行级别链接,而
chkconfig是要每一个运行级别单独配置服务。从本质上来说,这也就意味着每次我们使用update-rc.d改变一个运行级别,我们就不得不改变
所有的。例如,下面的命令序列与命令chkconfig -level 2345 inetd off的作用相同:
$ update-rc.d -f inetd remove
$ update-rc.d inetd stop 20 0 1 2 3 4 5 6 .
第一个命令移除了所有的指向/etc/init.d/inetd服务脚本的运行级别链接,-f标志将会使得update-rc.d即使在inetd脚本本身已经存在的情况
仍然进行相应的处理。第二个命令在每一个运行级别创建了一个服务级别为20的停止脚本。例如,这会创建一个 /etc/rc3.d/K20inetd的符号
链接来禁止运行级别3中inetd的运行。(在这里我们要注意的是我们要显示的添加reboot与 shutdown运行级别,即0和6,仅管其中所有的服务
都会被设置成为“stop“)。作为另外的一个例子,下面所显示的命令将会在运行级别3到5允许 inetd的运行,而在其他的运行级别中则被禁
止:
$ update-rc.d -f inetd remove
$ update-rc.d inetd start 20 3 4 5 . stop 20 0 1 2 6 .
Debian的update-rc.d最初看起来会叫人有一些迷惑,但是一旦我们明白,我们就会发现他可以多么出色的完成我们的工作。


例如:
Debian中设置Apache、MYSQL开机自动启动
1.设置Apache:
首先把apachectl拷贝到/etc/init.d目录下,并改名为apache2
# cp /自己的安装目录/apache/bin/apachectl /etc/init.d/apache2
然后进入/etc/rc2.d目录,这是debian默认的启动级别。建立连接指向/etc/init.d/apache2
# cd /etc/rc2.d
# ln -s /etc/init.d/apache2 S20apache2
重新启动系统后,apache自动启动。
 
2.设置MYSQL
首先拷贝mysql.server到/etc/init.d目录下命名为mysql
# cp /自己的安装目录/mysql/share/mysql/mysql.server /etc/init.d/mysql
然后进入/etc/rc2.d目录,这是debian默认的启动级别。建立连接指向/etc/init.d/mysql
# cd /etc/rc2.d
# ln -s /etc/init.d/mysql S20mysql
重新启动系统后,mysql就自动启动了。