在我的某个 debian 服务器上更新某些内容后,它会忽略启动时应运行的“一些”脚本(来自“init.d”)。
例如,Postfix、Memcached 或其他守护进程已启动,但“Apache2”、“Cron”和其他守护进程未启动。我在日志文件中找不到任何表明启动失败的错误,所以我猜它从未被触发过。
知道去哪儿找吗?:(
编辑: sysv-rc-conf 的输出 对我来说看起来不错,并表明 Apache 和 Cron 应该像 Postfix 等一样启动...
还有其他想法吗?
编辑/解决方案:我把所有不能正常启动的东西都移到了 rc2.d 中的“S19...”,现在我只需要在重启后运行。但我仍然不知道之前的问题是什么...
答案1
您可以使用sysv-rc-conf
实用程序。它会以行的形式显示/etc/init.d/
文件夹中找到的所有脚本。列代表不同的运行级别。您可以(取消)标记表格中的单元格,相应的链接将被(停用)激活。
在基于 debian 的系统上,您也可以使用update-rc.d
。在类似 redhat 的系统上,您可以使用chkconfig
。如果有相关链接,则应在启动时调用脚本。
答案2
中的脚本init.d
只有在应在特定运行级别运行时才会执行。大多数 Linux 发行版使用来自 (/etc/rcX.d
其中X
是运行级别)的符号链接来选择要执行哪些脚本。您的发行版可能还提供了管理这些链接的工具。
答案3
我并不是一个真正关心服务器故障的人,但我非常尊重 SO 引擎及其所有实例。我遇到了这里描述的问题,并最终解决了它。
在我的例子中,/etc/rc2.d 被忽略了,因为我的系统使用的是 /etc/init.d/.depend.start。我手动编辑了它,我对该文件所做的更改并没有被忽略。
我通过跟踪 /etc/init.d/rc 脚本和 startpar 手册页末尾的 FILES 部分发现了这一点。我真的希望这能不那么晦涩难懂和沉默。这似乎不是最近的变化,但我从未遇到过,可能是因为我最近使用了稳定的存储库。或者因为 apt-get 正在执行其工作,我不必手动更改设置。
但是,这可能不是本帖中描述的问题。作者提到使用 S19 解决了他的问题,我不明白。无论如何,我希望这对某些人有用。我检查了很多帖子,但没有找到任何解决方案。
答案4
要检查的一个地方是 /etc/default/servicename 文件(其中 servicename 是未启动的服务的名称)。
一些初始化脚本将在该文件中有一个选项,用于控制守护进程的启动,默认为否,因此它会强制您至少在启动守护进程之前查看配置。
Apache2 和 cron 没有内存中的此设置,但也许您提到的某些“其他”设置可能会使用它。