我可以从 init 脚本调用 /sbin/init 吗

我可以从 init 脚本调用 /sbin/init 吗

假设我有一个像这样的自定义 init

#!/bin/bash
sleep infinity

其中哪一个将加载 init

  1. #!/bin/bash
    /sbin/init
    sleep infinity
    
  2. #!/bin/bash
    exec /sbin/init
    sleep infinity
    

我知道 exec 应该启动一个新的 shell,但有必要吗?

答案1

  1. init从脚本调用其实是很正常的。常见的引导加载程序脚本将正确挂载根磁盘,然后运行 ​​init。

  2. init作为 init 而不是作为调用telinit,它必须作为 PID 1 运行。因此,您需要exec.因此,只有 (2) 脚本对于运行 init 可能有用。

  3. exec,脚本不再运行。因此,sleep infinity将不会运行。在 exec 之前运行的任何内容都非常有用。

  4. 如果您只想运行其他东西,您可能只想在 中适当列出它/etc/inittab,或者从那里调用一个脚本(通常放置在/etc/init.d并符号链接到/etc/rc#.d)。

相关内容