Solaris 启动脚本故障排除

在启动或者关闭期间,会调用许多旧的 rc init 脚本。
内核在引导过程中启动 svc.startd 守护进程后,svc.startd 守护进程根据运行级别执行 /sbin 目录中的 rc 脚本。
每个运行级别在 /sbin 目录中都有一个关联的脚本。

# ls -l /sbin/rc?
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc0
-rwxr--r--   1 root     sys         2031 Sep 20  2012 /sbin/rc1
-rwxr--r--   1 root     sys         2046 Sep 20  2012 /sbin/rc2
-rwxr--r--   1 root     sys         1969 Sep 20  2012 /sbin/rc3
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc5
-rwxr--r--   3 root     sys         1678 Sep 20  2012 /sbin/rc6
-rwxr--r--   1 root     sys         4069 Sep 20  2012 /sbin/rcS

每个 rc 脚本运行相应的 /etc/rc?.d/K* 和 /etc/rc?.d/S* 脚本。
例如,对于运行级别 3,以下脚本将由 /sbin/rc3 执行:

/etc/rc3.d/K*
/etc/rc3.d/S*

启动和停止运行脚本的语法是

S##name_of_script - Start run control scripts
K##name_of_scrips - Stop run control scripts

注意大写中的 S 和 K。
以小 s 和 k 开头的脚本将被忽略。
这可用于禁用该特定运行级别的脚本。

由 rc 脚本执行的任务

每个运行级别都与一组在该运行级别执行特定作业的 rc 脚本相关联。

RC 脚本执行的任务
rc0关闭并启动系统,以便安全关闭电源。 它还关闭系统服务和守护进程,终止正在运行的进程并卸载文件系统。
rc1使系统进入单用户模式。 它还停止系统服务和守护进程,杀死正在运行的进程并卸载文件系统。
rc2启动多用户操作,但不支持网络和 NFS。 它还清理 "/tmp" 和 "/var/tmp" 目录,加载网络接口,并启动 cron、lp 和 sendmail。
rc3启动正常的多用户模式。 在运行状态 2 下执行任务并启动 NFS 守护进程。
rc4没用过
rc5启动交互式软件重新启动。 它会提示备用引导设备。
rc6重新启动系统。
rcS,s在安装了一些文件系统的情况下启动单用户状态。
on  it road.com

故障排除

1.在RC脚本中设置调试模式

要在 Solaris 10 中调试旧版 rc init 脚本,可以将“set -x”临时添加到脚本的第二行以显示脚本的行为

例子

# head -2 /etc/rc3.d/S50apache
#!/sbin/sh
set -x
...

重启后在 /var/svc/log/milestone-multi-user-server:default.log 中显示输出。

2.检查语法

启动脚本文件以“S”开头,终止脚本文件以“K”开头。
确保大写的“S”和“K”在适当的脚本中就位。
将 S 更改为 K 或者将字母变为小写会导致脚本功能发生变化。

3. 确定将执行哪个 rc 级脚本

/etc/inittab 文件根据系统引导到的运行级别确定将执行哪个 rc 级别脚本。
确保 rc 脚本位于正确的 rc 脚本文件夹中。

4.检查软链接和权限

检查以下文件/目录的正确软链接和权限。

# ls -lrt /etc/rc?
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc0 -> ../sbin/rc0
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc1 -> ../sbin/rc1
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc2 -> ../sbin/rc2
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc3 -> ../sbin/rc3
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc5 -> ../sbin/rc5
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rc6 -> ../sbin/rc6
lrwxrwxrwx   1 root     root          11 Nov 23  2014 /etc/rcS -> ../sbin/rcS
# ls -lrt /etc/init
lrwxrwxrwx   1 root     root          12 Nov 23  2014 /etc/init -> ../sbin/init
日期:2020-09-17 00:15:25 来源:oir作者:oir