在inittab文件中定义系统初始化脚本: ::sysinit:/etc/init.d/rcs
sysinit:告诉init程序运行/etc/init.d/rcs脚本文件来初始化系统,rcs脚本中执行/etc/rc3.d/目录下的所有的rc启动脚本。/etc/rc3.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
/etc/rc.d/rc3.d/中的rc启动脚本通常是K或S开头的链接文件,对于以S开头的启动脚本,将以start参数来运行。而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。
#!/bin/sh
#检查/etc/rc3.d/目录,看是否有以S开头并且紧跟两个字符(实际上
#一般是两个数字0-99)命名的非普通(! -f"$i")文件,如果有则根据
#文件的类型作出两个选择
# 1、是.sh结尾的脚本时执行
# 2、如果不是.sh结尾的脚本,则传递给start参数执行这个文件
for i in /etc/rc3.d/S??* ;do
# 如果文件不存在则继续下一次循环
[ ! -f "$i" ] && continue
case "$i" in
*.sh)
# Source shell script for speed.
(
#trap命令用于指定在接收到信号后将要采取的动作
#trap - INT QUIT TSTP , 捕捉INT、QUIT、TSTP信号并清除这些信号
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i start
;;
esac
done
/etc/rc.S/rcS脚本执行结束.返回/inittab .