运行级脚本的执行顺序

Phi*_*ipp 5 linux startup-scripts runlevel

我在 /etc/rc0.d 中的运行级别 0 脚本,应该在停止时执行,例如

  1. K05foo -> ...
  2. K10bar -> ...
  3. K80baz -> ...
  4. S10somemore -> ...
  5. S90halt -> ...

是否正确,执行顺序如上所列,即

  1. 首先是所有杀戮,按优先级升序排列
  2. 然后所有开始,按优先级升序
  3. 所有这些,独立于我们切换到的运行级别 (S,0-6)
  4. 所有脚本总是被调用(即,没有额外的检查会阻止脚本被调用,例如,该脚本是否在前一个运行级别实际上已启动)

我很困惑,因为在我的嵌入式系统上,一些脚本似乎没有被执行,并且那个页面

S20链接在S91之前启动,K91在K20之前终止。

这与我上面的文字相矛盾。

Phi*_*ipp 2

为了完整起见,回答我自己的问题:

我在 OpenEmbedded 系统上使用 busybox。中的 rc 脚本/etc/init.d/rc具有以下行为:

  • 在目标运行级别中,所有 Kill 都在所有 Start 之前执行
  • 所有脚本均按优先级升序执行
  • 但是:只有在之前的运行级别中没有等效的启动(即它是新启动的)时才会执行启动
  • 并且,如果目标运行级别为 0(停止)或 6(重新启动),则启动实际上作为 Kills 执行 - 即“停止”作为参数传递。但毕竟还是杀死了,并且如果先前的运行级别中存在等效的启动,则仍然不会。

另外,让我印象深刻的是,shutdown now实际上切换到运行级别 1 而不是运行级别 0。您必须使用haltorpoweroff来运行运行级别 0。所以我在 rc0.d 中的脚本并没有真正执行,只有那些碰巧也在 rc1.d 中的脚本。