rc.d启动过程
1、
linux系统启动内核完成后,将会调用第一个进程,那就是 /sbin/init
,所以此 init 的进程 PID 将一定为1,我们可以通过ps
指令来查看一下:
# ps -ef | head
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Mar14 ? 00:00:00 /sbin/init
接着 init 进程就会通过 /etc/inittab
的配置文件进行初始化工作,此配置文件主要配置了我们系统的运行等级
:
id:3:initdefault:
表明linux运行在等级3上。linux的运行等级在/etc/inittab
都有说明,设定如下:
#0 停机(千万不能把initdefault 设置为0)
#1 单用户模式
#2 无网络支持的多用户模式,也就是没有NFS
#3 有网络支持的多用户模式
#4 保留,未使用
#5 有网络支持有X-Window支持的多用户模式
#6 重新启动(千万不要把initdefault 设置为6)
2、
init 进程调用 /etc/rc.d/rc.sysinit
进行系统初始化
3、
init 进程调用 /etc/rc.d/rc
程序,根据上面/etc/inittab
配置的运行等级,rc 进程去调用 /etc/rc.d/rcN.d/
目录下的脚本程序
此处运行等级为3,所以会调用 /etc/rc.d/rc3.d/
目录下的脚本程序
4、
执行/etc/rc.d/rc.local
程序
rc.local
就是在一切初始化工作后,linux留给用户进行个性化的地方。你可以把你想设置和启动的脚本放到这里。
5、
执行 /bin/login
程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
rcN.d目录下脚本命名说明
所有 /etc/rc.d/rcN.d/
目录下的脚本都是对 /etc/rc.d/init.d/
的软链。
/etc/rc.d/rcN.d/
目录下的脚本命名规则是:
S/K + 数字 + 脚本名
S 代表 start ,系统启动时运行的脚本
K 代表 kill ,系统关闭时运行的脚本
数字 代表 排序,数字越小执行优先级越高,也就是说 S08iptables
执行优先级高于 S99local
脚本名 对应 /ecc/rc.d/init.d/
目录下同名脚本
添加系统启动关闭执行脚本
直接添加
直接在 /ect/rc.d/rc.local
文件里添加自己需要执行的内容
使用chkconfig
使用 chkconfig
命令,步骤如下:
1、在 /etc/rc.d/init.d/
目录下添加shell脚本,脚本头部必须带有 chkconfig 说明内容,eg:
#!/bin/bash
#chkconfig:2345 70 30
#description:this is test shell
mkdir /tmp/chktest
#chkconfig:2345 70 30
指明添加到哪几个运行等级上,启动数字优先级,关闭优先级
#description:this is test shell
脚本功能描述
2、将脚本添加可执行权限:
chmod +x xxx.sh
3、使用chkconfig将此脚本添加进系统服务
chkconfig --add xxx.sh
我们可以通过 chkconfig --list
查看已添加系统服务的列表