É reiniciado da mesma forma que o init 6?

19

O reboot é o mesmo que o init 6 para o Ubuntu?

Estou executando o Ubuntu 12.04 no Amazon EC2. Quando ssh'ed na caixa eu posso digitar runlevel e eu recebo:

N 2

Olhando para man reboot , vejo que:

  

Quando chamado com --force ou quando no nível de execução 0 ou 6, esta ferramenta invoca a própria chamada do sistema reboot (2) e reinicializa o sistema diretamente. Caso contrário, isso simplesmente invoca a ferramenta shutdown (8) com os argumentos apropriados.

Se eu ler man shutdown 8 , vejo:

  

o desligamento permite que o sistema seja desativado de maneira segura. Todos os usuários logados são notificados de que o sistema está inoperante e, nos últimos cinco minutos de TIME, novos logins são evitados.

Meu entendimento básico sobre a diferença entre reboot e init 6 é:

  • Em outras distros e talvez em distros antigas reboot apenas desmontaria os discos e basicamente apertaria o botão liga / desliga sem executar nenhum script de desligamento
  • init 6 executará todos os scripts de desligamento em /etc/init/rc.* , pois reduz o nível de execução do sistema
  • Em versões mais recentes do Ubuntu, o comando reboot sem --force ou -f executará o comando shutdown, que basicamente faria o mesmo que init 6
  • Provavelmente, é melhor usar o hábito de usar init 6 em vez de reboot , pois é mais seguro e funciona melhor na distribuição cruzada, mas o comportamento padrão de reboot foi alterado para tentar evitar erros / dataloss se alguém usá-lo.

Isso é certo? Se não, o que me falta?

    
por cwd 13.08.2012 / 22:59

1 resposta

20

Realmente, não há nenhum motivo convincente para usar init 6 em vez de reboot , a menos que:

  • Por algum motivo você está perdendo o executável reboot , ou
  • Você está deliberadamente tentando evitar notificar os usuários de que o sistema está inoperante.

reboot (desde que você não execute reboot --force ) é, na verdade, a maneira mais "suave" de encerrar.

Considere:

  

init 6 executará todos os scripts de desligamento em /etc/init/rc.* , pois reduz o nível de execução do sistema

Mas o comando reboot , chamado sem o --force flag, somente reinicia diretamente o sistema (via o reboot chamada do sistema ) quando uma dessas duas situações se aplica:

  • O sistema está em runlevel 0 (modo de usuário único), portanto não há redução do nível de execução que pode ocorrer, portanto, nenhum script de desligamento é executado automaticamente.
  • O sistema está no nível de execução 6. O que init 6 faz para colocar o sistema no nível de execução 6. Novamente, não há nada em execução init 6 fará isso executando o comando reboot won ' t fazer.

Caso contrário, sudo reboot é equivalente a sudo shutdown -r now . Isso faz todas as coisas boas que sudo init 6 faz, mas também:

  • notifica os usuários de que o sistema está inoperante.
  • impede novos logins (embora eles provavelmente não tenham sucesso de qualquer forma).
  • é mais intuitivo e autodocumentado do que sudo init 6 .

Se você estiver em um sistema com apenas você conectado e apenas logins locais, não há nada de errado em usar init 6 para reinicializar. Se é assim que você prefere reinicializar, então todos os meios, vá em frente - você não está prejudicando nada ao fazê-lo. Mas também não há nada objetivamente preferível em fazer dessa maneira.

A documentação do próprio

init diz que não é a maneira normal de desligar ou reinicializar o sistema. Considere quando init é executado pelo usuário (como quando você executa sudo init 6 ), ele executa telinit (consulte man init ). telinit é o que realmente altera os níveis de execução. E man telinit nos diz:

  

Normalmente, você usaria a ferramenta desligamento (8) para interromper ou reiniciar   o sistema ou para desativá-lo para o modo de usuário único.

    
por Eliah Kagan 13.08.2012 / 23:20

Tags