次のカスタム初期化があるとします。
#!/bin/bash
sleep infinity
次のうちinitをロードするものは何ですか?
-
#!/bin/bash /sbin/init sleep infinity
-
#!/bin/bash exec /sbin/init sleep infinity
execが新しいシェルを起動する必要があることを知っていますが、必ず必要ですか?
答え1
init
スクリプトからの呼び出しは実際には非常に正常です。一般的なブートローダスクリプトは、ルートディスクを適切にマウントしてからinitを実行します。init
initではなくinitで呼び出すには、telinit
PID 1で実行する必要があります。したがって、が必要ですexec
。したがって、initの実行には(2)スクリプトのみが役に立ちます。その後、
exec
スクリプトは実行されなくなります。したがってsleep infinity
、実行されません。 exec 以前に実行されるすべてが便利です。他のものを実行したい場合は、適切にリストしたり、そこから
/etc/inittab
スクリプトを呼び出すこともできます(通常は配置され、/etc/init.d
シンボリックリンクされています)。/etc/rc
#.d
)。