这两个其实是同一个东西,/etc/init.d是/etc/rc.d/init.d的软链接。并且这个东西只有在fedora下面有,ubuntu下面没有/etc/rc.d/这个目录,只有/etc/init.d,openSUSE下面有/etc/rc.d,直接链接的/etc/init.d。 并且有时候可以看到rc0.d/这样的目录,查看这些目录里的文件,ls -l,发现都是软链接。 要想搞明白这里面的关系就要搞明白Linux的运行级。打开/etc/inittab,里面应该有注释,
# 0 – 停机(千万别把initdefault设置为0,否则系统永远无法启动) 不同的运行级,开机启动的时候会开启不同的服务,所以当开机以后执行init(pdi为1,是开机后执行的第一个进程,所有其他进程都是这个进程的后代)这个进程,就会根据不同的运行级开启不同的默认服务(fedora下是读取rc.sysinit)。 可以看到rc0.d/这样的目录下的脚本前面都带有S或者K,s就是start,k就是kill。比如说当你从运行级5到3切换的时候,可能就会关掉有些服务,这时候就会执行k开头的脚本。
并且字母后面会接着数字,表示的是脚本执行的先后顺序,数字越小越早执行,很多时候这些执行顺序是很重要的,比如要启动Apache服务,就必须先配置网络接口,不然一个没有IP的机子来启动http服务那岂不是很搞笑… 跟以上这些发行版不同的是,archlinux用的是类似BSD的方式,所有的服务脚本放在/etc/rc.d目录下(就没有init.d这个目录了),放在这个目录下并不意味之开机就会默认开启,开机要想默认开启某项服务,要自己把要开启的服务添加到/etc/rc.conf的DAEMONS里面,不过这样的话就没有运行级这个概念了,不管系统是哪个运行级起来的,这些服务默认都会开机启动。 (责任编辑:IT) |