繁体   English   中英

了解 Bash init 脚本启动/停止/重启/

[英]Understand Bash init script start/stop/restart/

我们可以在 /etc/rc.d/init.d/ 文件夹下提供很多服务(bash 脚本)。 它们看起来都像这样:

case "$1" in 
start)   echo "start" ;;
stop)    echo "stop" ;;
restart) echo "restart" ;;
esac

我只是不明白我们启动我的计算机,内核如何调用这些启动脚本并传入参数“start” 或者当服务终止时,谁调用脚本并传入参数“restart”

谁可以给我解释一下这个?

提前致谢。

这取决于您的发行版/版本/配置选择。 对于带有 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
...

init shell 脚本的实际位置在 /etc/init.d 下。 这些脚本符号链接到 rc 目录,如 /etc/rc0.d、/etc/rc1.d、/etc/rc2.d。 然后,在每个 rcn.d 目录中,我们的文件名以 K 或 S 开头,后跟两位数字。 这些是指向实际 init shell 脚本的符号链接文件,其中 K 表示终止(即停止),而“S”表示启动。

例如:
S19postgresql
S20clamav-freshclam
S50saned
S70pppd-dns
S99点播

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM