procd系列二:内核退出流程

在 procd 执行/etc/rc.d/S*时,其参数为”boot”(例如:/etc/rc.d/S00sysfixtime boot),这样就会执行
每个脚本里面的 boot 函数,也可能是间接执行 start 函数。/etc/rc.d/下的所有脚本都是链接到/etc/init.d/下的脚本。

procd在初始化过程中注册了相应的信号处理函数

procd进程在收到信号时,会调用相应的信号处理函数

最后通过在uloop_run()的cb回调函数中调用下面函数,执行inittab中指定的脚本

execlp:

/etc/rc.d/K99call_rc6 shutdown

读取 /etc/inittab

::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
tts/0::askfirst:/usr/libexec/login.sh
ttyS0::askfirst:/usr/libexec/login.sh
tty1::askfirst:/usr/libexec/login.sh

最终其实就是 读取 /etc/rc.d/ 下的启动脚本,逐个执行。 /etc/rc.d/ 目录文件实例:

重点补充
从前面知识了解到/etc/rc.d/中存放的都是K+数字+/etc/init.d/对应的脚本名字或者S+数字+/etc/init.d/对应的脚本名字
当我们以 enable 参数调用启动脚本时,系统会创建一个该脚本文件的符号链接(例如 S10example、K15example),放在/etc/rc.d/目录下,而当以 disable 参数调用脚本时,系统会删除该符号链接。
这些对应的脚本中的 START= 和 STOP=(就是K或者S后面的数字) 分别决定了该脚本会在系统启动过程和系统关机过程的哪个点执行,数字越小越先执行。
也就是开机的时候会按照数字从小到大执行S开头的脚本来启动对应的程序,
而关机的时候会按照数字从小到大执行K开头的脚本来关闭对应的程序。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值