更改初始化脚本优先级

更改初始化脚本优先级

我正在运行 raspbian(基于 debian)。我想更改 init 服务的优先级,以便 init 运行的第一个脚本是为我制作的。我该怎么做?

在运行级别 SI 上,有 3 个优先级为 01 的脚本:hostname.sh、fake-hwclock 和 mountkernfs.sh。如果我只是将脚本放在优先级为 01 的运行级别 S 上,那么它就不是第一个被执行的脚本。我尝试使用(例如在 mountkernfs.sh 的情况下)将所有这些脚本的优先级更改为 02

sudo update-rc.d -f mountkernfs.sh remove
sudo update-rc.d mountkernfs.sh start 02 S

第一个命令有效地从 /etc/rcS.d 中删除脚本。第二个命令再次将 mountkernfs.sh 设置为优先级 01。

任何想法?谢谢你!

答案1

/etc/init.d/ 上的 init 脚本指定了有关其 LSB 标头的一些信息,这些信息本质上只是脚本开头的一些行。某些脚本的“Required-Start”字段允许您指定必须在此脚本之前初始化的服务。insserv自动添加有关 LSB 标头的初始化脚本。

因此,要解决这个问题:

  • 使用 LSB 标头上的“Provides”字段将脚本命名为“X”。
  • 分别使用 LSB 标头上的“Default-Start”和“Default-Stop”字段添加必须启动和停止脚本的运行级别。
  • 将“X”设置为优先级为 01 的脚本的 LSB 标头上的“Required-Start”字段:hostname.sh、fake-hwclock 和 mountkernfs.sh。
  • sudo insserv name_of_your_script_file使用(不是您在“提供”字段中指定的名称)添加服务

这会移动所涉及脚本的所有必要脚本优先级以匹配依赖项。就我而言:

  • S01X.sh
  • S02mountkernfs.sh
  • S02主机名.sh
  • S02假hwclock
  • S03udev

来源:http://wiki.debian.org/LSBInitScripts/DependencyBasedBoot

相关内容