“/etc/rc.d/init.d/
目录下的脚本就类似与windows
中的注册表,在系统启动的时候某些指定脚本将被执行”。
讲解/etc/rc.d/init.d/
之前需要了解两个知识点:
Linux引导过程
http://www.cnblogs.com/Quains/archive/2012/01/04/2312335.html
运行级别(run level)
init进程是系统启动之后的第一个用户进程,所以它的pid
一定始终为1。
init进程运行之后,首先读取:/etc/inittab
文件的initdefault id
值,这个值称为运行级别(run-level
)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到6
,具有不同的功能。
运行级别:
# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 – 系统保留的
# 5 - X11 (x window)
# 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )
/etc/rc.d与/etc/rc.d/init.d的关系
他们之间有很多关系。
注意:一般.d
结尾的是目录文件。
init.d
目录放置的是一些脚本:一般是Linux以rpm包安装时设定的一些服务的启动脚本。系统在安装时装了很多rpm
包,这里面就有很多对应的脚本,执行这些脚本来启动,停止,重启这些服务。
/etc/rc.d/init.d
这个目录下的脚本就类似于windows的注册表,在系统启动的时候执行。
init.d
下面的脚本,并不是直接运行,而是有选择的因为系统并不需要启动所有的服务(根据运行级别
来决定运行哪些服务)。
在决定了系统启动的run level
之后,/etc/rc.d/rc
这个脚本先执行。
对于每一个运行级别,在rc.d
下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本一些链接。
每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在rc3.d下,但是放在这个rc3.d下的都是一些链接文件,链接到init.d
中相对应的文件,真正干活到init.d
里的脚本。
带K的表示停止(Kill
)一个服务,S表示开启(Start
)的意思。
传S时相当于执行了/etc/rc.d/init.d/xxx start
这条命令,当然K就相当于/etc/rc.d/init.d/xxx stop
了