linux中rc.d目录下的文件

参考
 
 
控制脚本目录/etc/rc.d,该目录下存在各个运行级别的脚本文件,以下是rhel-server-6.3为例的查询结果:
需要注意,在不同的linux版本中,这些目录并不完全相同,知道原理就好
 
[root@localhost etc]# cd /etc/rc.d
[root@localhost rc.d]# ls
init.d  rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local  rc.sysinit
[root@localhost rc.d]# cd rc0.d
[root@localhost rc0.d]# ls -l
总用量 0
lrwxrwxrwx. 1 root root 20 9月   7 19:53 K01certmonger -> ../init.d/certmonger
lrwxrwxrwx. 1 root root 16 9月   7 19:59 K01smartd -> ../init.d/smartd
lrwxrwxrwx. 1 root root 22 9月   7 19:53 K02avahi-daemon -> ../init.d/avahi-daemon
 
 
/etc/rc.d/rc0.d~/etc/rc.d/rc6.d
这些文件夹分别包含每个运行等级对应的init脚本。在实际使用中,它们一般通过符号链接到/etc/init.d文件夹下的实际文件。不过要注意的是,这些文件夹下的init脚本都有一些特别的名字,命名都以S(start)、K(kill)或D(disable)开头, 后面跟一个数字。不同的运行等级所运行的脚本是不同的,可能在等级1,2是运行的,而在等级3是要关闭的
 
a. 当init进入一个运行等级的时候,它会按照数字顺序运行所有以K开头的脚本并传入stop参数,除非对应的init脚本在前一个运行等级中没有启动。
b. 然后init按照数字顺序运行所有以S开头的脚本并传入start参数。
c. 任何以D开头的init脚本都会被忽略—这让你可以在指定的运行等级禁止一个脚本,或者你也可以仅仅移除全部符号链接。
所以如果你有两个脚本,S01foo和S05bar,init首先会运行S01foo start,当它进入特定的运行等级后再执行S05bar start。
 
传S时相当于执行了/etc/rc.d/init.d/xxx start这条命令,当然K就相当于/etc/rc.d/init.d/xxx stop了。
 
以rc0.d目录下的配置文件为例,rc0.d调用了/etc/rc.d/init.d目录下的程序。
 
/etc/rc.d/init.d
各种服务器和程序的二进制文件存放目录。
该文件夹包含所有服务在各个运行等级中的全部启动脚本。一般来说,它们都是标准的shell脚本,遵守最基本的标准。 每个脚本最少接受两个参数start和stop,
 
/etc/rc.d/rc.local
并非所有的发行版都使用了rc.local,通常它是一个留给用户修改的shell脚本。一般会在init进程结束的时候运行它,所以你可以在这里放一些想要运行的额外脚本,而不用再创建自己的init脚本。
 
除了直接调用脚本外(如/etc/rc.d/init.d/xinetd),还可以用service命令来控制init.d目录下的服务,
 
 
 
redhat的系统启动方式和执行次序是:
1)加载内核
2)执行init程序
3)/etc/rc.d/rc.sysinit                    # 由init执行的第一个脚本
4)/etc/rc.d/rc $RUNLEVEL           # $RUNLEVEL为缺省的运行模式
5)/etc/rc.d/rc.local
6)/sbin/mingetty # 等待用户登录
posted @ 2018-08-14 12:52  坚强的小蚂蚁  阅读(9234)  评论(0编辑  收藏  举报