排除故障如果/etc/init.d脚本将启动时运行,而不实际重新启动?

我在/etc/init.d中有这个脚本,我想知道它是否会在系统重启时运行。 有没有办法“模拟”重启的条件,看看脚本是否真的被调用(并debugging它)而不必真正重启系统?

请注意,我知道你可以运行脚本来debugging它。 我的意思是在手动运行脚本运行正常时排除这些情况,但由于某些原因,系统启动/重新启动时(例如,某些运行条件与另一个脚本,具有权限的事情等)不能运行。

也许这与运行级有关? 因为我不熟悉他们。

谢谢!

一个共同的问题是环境的差异。 如果脚本在第一行没有爆炸path,那么shell之间的差异可能是一个问题。

我遇到的最常见的问题是path期望。 init.d脚本以剥离的path运行。

这些与cron脚本有相同的问题。 我相信path和环境是相同的,至less是非常相似的。 尝试以转储环境的root身份运行cron作业。 就像是:

 echo PATH=$PATH echo echo ENVIRONMENT env echo echo Set variables set 

然后启动/bin/sh会话并在运行init作业之前清除其环境以匹配cron作业的环境。 您应该能够编写脚本并作为/bin/sh脚本运行。

虽然这可能是难看的debugging方式,但实际上可以尝试在未使用的运行级别上启用服务,以检查脚本在被init调用时的行为。

例如通常,运行级别4不被使用(尽pipe检查你的系统)。 然后你可以将symlinks目录rc3.d复制到rc4.d(以确保级别3和4具有相同的所有服务)并启用你的服务级别4.然后,通过运行telinit 4你可以模拟脚本的启动。 这将导致init切换运行级别,与在机器重新启动之前切换到重新启动运行级别几乎相似。

请注意,来自@BillThor的答案正确地提出了关键问题,并且可能会声明比每次拉取init都更方便的方式来debugging脚本,因为每次都会执行重新启动服务的工作。