Os runlevels 0 e 6 são um resultado ou uma transição?

1

Os runlevels 0 e 6 possuem o significado de desligar ou reinicializar o sistema.

Se eu digitar o comando init 0 , o sistema será encerrado como resultado.

No entanto, minha pergunta é

  1. se o sistema estiver sendo desligado, porque foi alterado com sucesso para o nível de execução 0
  2. ou se eu apenas acionasse a alteração do meu nível de execução atual para o nível de execução 0 (ou seja, disse ao meu sistema que eu quero ir para o nível de execução 0) e ele chegará ao após o desligamento? O que é claro nunca , já que o sistema não fará nada depois de ser desligado.

Em outras palavras: o sistema está no nível de execução 0

  • enquanto o sistema está sendo desligado (durante a transição da execução para o desligamento) ou
  • depois o sistema foi desligado (como um runlevel inacessível que descreve o resultado)?

E uma pergunta adicional sobre o nível de execução 6: o sistema está no runlevel 6 durante qualquer fase da próxima inicialização?

Estou interessado no comportamento do Linux (se houver alguma diferença no Unix).

    
por user5626466 16.04.2018 / 16:22

1 resposta

1

init (se você está usando um estilo SVR4 clássico init , systemd, runit ou qualquer outra coisa) é codificado como uma máquina de estado. Ele só faz coisas em resposta a eventos que fazem com que ele mude de estado. A transição de um sistema sendo ligado para ser desligado é uma mudança de qualquer estado atual para o estado definido pelo nível de execução 0, e o desligamento para uma reinicialização é o mesmo, apenas mudando para o estado definido pelo nível de execução 6 (e na verdade, as duas transições são praticamente idênticas, exceto por uma chamada final no kernel por init ).

Para responder a sua segunda pergunta, o sistema está funcionalmente 'no runlevel 6' durante o período de tempo em que init liga para o kernel para reiniciar (o que não retorna) até que o kernel execute a execução para 'init durante a próxima inicialização.

    
por 16.04.2018 / 21:39