我在/etc/rc0.d中的运行级别0脚本,应该在停止时执行,例如
> K05foo – > …
> K10bar – > …
> K80baz – > …
> S10somemore – > …
> S90halt – > …
是正确的,执行顺序如上所列,即
>首先按升序优先顺序杀死所有杀戮
>然后所有开始,按升序排列
>所有这些,与我们切换的运行级别无关(S,0-6)
>所有脚本总是被调用(即,没有额外的检查会阻止脚本被调用,例如,在之前的运行级别中是否实际上启动了脚本)
我很困惑,因为在我的嵌入式系统中,一些脚本似乎没有被执行,that page说
S20 link is started before a S91 and and K91 is kill before K20.
这与我上面的文字相矛盾.
解决方法
为了完整起见,回答我自己的问题:
我在OpenEmbedded系统上使用busyBox. /etc/init.d/rc中的rc脚本具有以下行为:
>在目标运行级别中,所有Kill都在所有Starts之前执行
>所有脚本都按升序优先顺序执行
>但是:只有在前一个运行级别中没有等效的开始时才执行启动(即,它是新启动的)
>并且,如果目标运行级别为0(暂停)或6(重新启动),则启动实际上将执行为Kills – 即“stop”作为参数传递.但仍然在所有杀戮之后,如果在之前的运行级别中存在等效的开始,则仍然没有.
另外,我现在的关闭实际上切换到运行级别1而不是运行级别0.你必须使用halt或powerofffor runlevel 0.所以我的脚本在rc0.d里没有真正执行,只有那些碰巧也在rc1.d.