Digamos que eu tenha um init personalizado como este
#!/bin/bash
sleep infinity
Qual deles carregará o init
-
#!/bin/bash /sbin/init sleep infinity
-
#!/bin/bash exec /sbin/init sleep infinity
Eu sei que o exec deve iniciar um novo shell, mas é necessário?
Na verdade, é muito normal invocar
init
de um script. Os scripts de carregador de inicialização comuns montarão corretamente o disco raiz e, em seguida, executarão o init.Para invocar
init
como init, e não comotelinit
, ele deve ser executado como PID 1. Portanto, você precisa doexec
. Portanto, apenas seu (2) script é potencialmente útil para executar o init.Depois de um
exec
, o script não está mais em execução. Assim, osleep infinity
não será executado. Qualquer coisa executada antes do executivo pode ser bastante útil.Se você quiser apenas algo mais em execução, convém apenas listá-lo adequadamente em
/etc/inittab
, ou um script invocado a partir daí (normalmente colocado/etc/init.d
e vinculado a/etc/rc
#.d
).