Quando o sistema transita de um nível de execução para outro, ele executa todos os scripts "K" no nível de execução existente, em ordem, e todos os scripts "S" no novo nível de execução, em ordem. O Debian implementa a inicialização paralela, portanto, a maioria dos scripts será executada simultaneamente (mas com eficiência na ordem) e há um padrão para incluir informações de dependência em cada script e ferramentas para inserir / remover scripts. Você pode desativar a simultaneidade adicionando CONCURRENCY=NONE
a /etc/default/rcS
.
No atual inittab
do Debian, o conjunto de comandos a ser executado em cada transição de nível de execução é /etc/init.d/rc
Quando você inicializa, o sistema é considerado no runlevel S
. Os scripts "S" em /etc/rcS.d
são executados, em ordem (por /etc/init.d/rc
).
Quando eles são concluídos, o sistema é movido para o nível de execução que você especificou na linha de comando do kernel, ou o nível de execução padrão, que é 2, se você não tiver o X instalado.
Não há scripts "K" em /etc/rcS.d
, então nada acontece - o runlevel "S" é destinado à inicialização geral do sistema. Mas então todos os scripts "S" em /etc/rc2.d
são executados, em ordem.
Uma vez concluídas, você está oficialmente no runlevel 2. O comando /etc/init.d/rc
retorna, e init
spaws o getty
está configurado para fazer e aguarda que um sinal mude o nível de execução.
Quando você desliga, um sinal é enviado para init
. Então, o sistema está se movendo do nível de execução 2 para 6 (reinicialização) ou 0 (desligamento). Então todos os scripts "K" em /etc/rc2.d
são executados, em ordem. Então, todos os scripts "S" em /etc/rc6.d
ou /etc/rc0.d
são executados, em ordem, se existirem.
Então, como este é o nível de execução 0 ou 6 (ook em /etc/init.d/rc
- esse script explicitamente testa 0 ou 6), ele fará a transição imediatamente para fora do runlevel, fazendo com que todos os scripts "K" sejam executados. p>
O último script "K" para 0 ou 6 será um comando que interrompe / desliga ou reinicializa o sistema.