我们可以在文件夹/etc/rc.d/init.d/下进行大量服务(bash脚本)。他们都看起来像这样:
case "$1" in
start) echo "start" ;;
stop) echo "stop" ;;
restart) echo "restart" ;;
esac
我只是不明白我们启动计算机,内核如何调用这些启动脚本并传入参数“start” 或者当服务死亡时,谁调用脚本并传入参数“restart”
有人可以向我解释一下吗?
提前致谢。
答案 0 :(得分:0)
这取决于您的分发/版本/配置选择。 对于具有System V风格启动文件的Debian,请查看http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit
粗略地说,每个运行级别都有一个目录,例如/etc/rc2.d用于级别2,包含指向/etc/init.d中常规文件(脚本)的符号链接
在某个时间点,当转到第2级时,将运行以下脚本循环
for s in /etc/rc2.d/S*
do
$s start
done
按字母顺序开始执行名称以S开头的所有链接。实际上S后跟两位数字,指定执行顺序。
离开运行级别时K *文件的想法相同。
现在回到你的问题:这是/ etc / inittab文件中某些行的工作
# The default runlevel.
id:2:initdefault:
....
# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
...
答案 1 :(得分:0)
init shell脚本的实际位置在/etc/init.d下。这些脚本符号链接到rc目录,如/etc/rc0.d,/etc/rc1.d,/etc/rc2.d。然后,在每个rcn.d目录中,我们有文件名中以K或S开头的文件,后跟两位数字。这些符号链接文件指向实际的init shell脚本,其中K表示Kill(即停止),“S”表示Start。
例如:
S19postgresql
S20clamav-freshclam的
S50saned
S70pppd的DNS
S99ondemand