假设我有一个像这样的自定义 init
#!/bin/bash
sleep infinity
其中哪一个将加载 init
-
#!/bin/bash /sbin/init sleep infinity
-
#!/bin/bash exec /sbin/init sleep infinity
我知道 exec 应该启动一个新的 shell,但有必要吗?
答案1
init
从脚本调用其实是很正常的。常见的引导加载程序脚本将正确挂载根磁盘,然后运行 init。要
init
作为 init 而不是作为调用telinit
,它必须作为 PID 1 运行。因此,您需要exec
.因此,只有 (2) 脚本对于运行 init 可能有用。后
exec
,脚本不再运行。因此,sleep infinity
将不会运行。在 exec 之前运行的任何内容都非常有用。如果您只想运行其他东西,您可能只想在 中适当列出它
/etc/inittab
,或者从那里调用一个脚本(通常放置在/etc/init.d
并符号链接到/etc/rc
#.d
)。