上次我们说到了不同的执行等级,既然不同的执行等级有不同的激活程序,那么一个执行等级到底要激活或停止那些程序?系统上的每一个执行等级是依据/etc/inittab文档的设置内容以及在/etc/rc.d/rcN.d目录(N为对应执行等级)下所有的激活/停止script来决定进入该执行等级时所需要激活或者停止的程序。而这些/etc/rc.d/rcN.d目录可以称为对应执行等级的激活目录。
默认,除了/etc/rc.d/rc.local之外,系统上其他所有的激活/停止script都是存储在/etc/rc.d/init.d目录内,而前面提到的在/etc/rc.d/rcN.d目录下的script都是指向/etc/rc.d/init.d目录下激活script的符号连接文档。
基本上,每个激活/停止脚本(script)都会提供数个不同的选项,但是他们一定都有提供start & stop两个,start表示将该脚本所控制的程序激活起来,相反的,stop选项表示停止在建立激活/停止脚本的符号连接文档时,我们可以利用文件名称设置为S开头来表示用 start激活脚本,设置为K表示stop脚本,我们还可以载文件名中(s/k之后)设置一个数值来表示激活脚本的优先级,越大越晚执行。
如:sendmail服务的激活脚本
1 /etc/rc.d/init.d/sendmail 2 /etc/rc.d/rc0.d/K30sendmail 3 /etc/rc.d/rc1.d/K30sendmail 4 /etc/rc.d/rc2.d/S80sendmail 5 /etc/rc.d/rc3.d/S80sendmail 6 /etc/rc.d/rc4.d/S80sendmail 7 /etc/rc.d/rc5.d/S80sendmail 8 /etc/rc.d/rc6.d/K30sendmail
因为,所有由init执行的激活script都是用符号连接指向/etc/rc.d/init.d目录下的script文档,所以,如果我们需要修改某个激活脚本的话,只需要修改/etc/rc.d/init.d下的脚本即可。当我们需要在系统上新增加一个脚本,将该脚本放在/etc/rc.d/init.d下,然后每一个激活目录(/etc/rc.d/rcN.d)内建立适当的K* or S*符号连接,相反的就del it !
另:/etc/rc.d/rc.local是一个唯一不符合这个文档结构的激活脚本,默认,这个脚本会被/etc/rc.d/rc2.d、/etc/rc.d/rc3.d、/etc/rc.d/rc5.d目录下的连接文件S99local连接,也就是2、3、5等级上的最后一个执行脚本。