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