同所有的Unix一样,Debian启动时要执行init程序.init的配置文件(/etc/inittab)中指定的第一个执行脚本应该是/etc/init.d/rcS.该脚本执行/etc/rcS.d/目录中各脚本的扩展名指定或衍生进程完成诸如检查并挂载文件系,装载内核模块,启动网络服务,设定时钟等系统初始化工作.接着,为了兼容性考虑,它运行/etc/rc.boot/目录下的文件(除了那些文件名中包含`.''的文件),目录中的脚本通常是供系统管理员使用的,用于有兼容性问题的软件包.
完成系统启动进程后,init执行默认运行级别(该运行级别由/etc/inittab中的id给出)指定的所有的启动脚本.同大多数SystemV兼容Unix一样,Linux有7个运行级别:
0(关闭系统),
1(单用户模式),
2到5(各种多用户模式),以及
6(重启系统).
Debian系统运行id=2,它表示进入多用户模式时默认运行级别为''2'',所以将运行/etc/rc2.d/中的脚本.
实际上,任意目录/etc/rcN.d/中的脚本都是指向/etc/init.d/的符号链接(软件链接#ln-s源文件目标文件名).然而,每个/etc/rcN.d/目录中文件的名称用来指定/etc/init.d相应脚本的运行方式.特别是,在进入任何运行级别之前,所有名称以''K''打头的脚本均被运行,这些脚本的工作是中止进程.然后,所有名称以''S''打头的脚本被运行,这些脚本的工作是启动进程.名称中跟在''K''或''S''后的两位数规定了脚本运行的先后次序,数字小的脚本先运行.
采用这种工作方式是因为/etc/init.d/中的脚本均有一个参数规定脚本`start'',`stop'',`reload'',`restart''或`force-reload'',脚本按各自参数的赋值执行任务.这些脚本甚至可以在系统启动后,用来控制各种进程.
例如,使用带`reload''参数的命令
/etc/init.d/sendmailreload
发给sendmaildaemon进程一个信号,要它重读配置文件。
我们可在rc.local文件中添加开机要启动的项目,就可以达到开机自动启动的效果。因为rc.local在/etc/init.d/下。rc.local又默认符号链接到debian开机启动脚本rc2.d下。或者可直接在/etc/init.d下创建一个可执行的脚本,直接在rc2.d中做一个符号链接。如:在init.d下创建了一个firewall的脚本,在rc2.d下一个符号链接#ln-s/etc/init.d/firewallS20firewall
下载本文示例代码