放在 init.d 中的服务脚本可以在启动和关闭时调用吗?

放在 init.d 中的服务脚本可以在启动和关闭时调用吗?

我正在运行红帽 5.1。我有一个名为 sysinit 的脚本,我使用 chkconfig --add sysinit 将其添加为服务。我在文件中设置了以下内容:

#chkconfig 4 01 01

这会在我的 rc4.d 目录中为 S01sysinit 创建一个符号链接。但是,我希望该脚本在启动和关闭时运行。无论我做什么,我都无法让自定义脚本(服务)在关闭时运行。我什至尝试将我的功能分成两个脚本,一个在 S01 运行,另一个在 K01 运行,但它不起作用。我不想不得不修改 rc.sysinit 文件来完成我的脚本应该做的事情(我不应该碰我想的)。我需要这样做的原因是因为我需要在 rc.sysinit 文件尝试卸载 /opt 目录之前卸载 /opt 目录内的 samba 共享(现在我收到“设备正忙”失败,因为 cifs 挂载是还在那儿)。

我需要做一些特殊的事情才能使我的脚本可以在启动、关闭和重新启动时运行吗?我可以在同一运行级别下使用 K01sysinit 和 S01sysinit 吗?或者我误解了运行级别的工作原理?

我的脚本中已有 )start 和 )stop 部分。

答案1

是的,您应该同时拥有 S 和 K。 K 脚本应在以下情况下运行:离开所说的水平。您可能想要使用的搜索词是“系统V初始化“ 或者 ”特利尼特”。

是否chkconfig按预期安装了符号链接?

答案2

我找到的解决方案是添加以下代码:

    touch /var/lock/subsys/<scriptname> 

当 etc/rc.d/rc 文件尝试从标有 K* 的符号链接执行脚本时,它正在寻找锁定文件。如果没有该文件,系统就不知道“服务”正在“运行”。

相关内容