Além de atualizar o kernel, há alguma alteração em um sistema Linux que exija reinicialização? Sei que existem situações em que uma reinicialização facilita as coisas, mas há outras que não podem ser realizadas, exceto com uma reinicialização?
Para esclarecer: Estou pensando em um sistema típico de desktop ou servidor que não esteja sofrendo de mau funcionamento de hardware.
Respostas:
Algumas coisas vêm à mente:
Recupere-se de um pânico no kernel
Um pânico do kernel, por definição, não pode ser recuperado sem reiniciar o kernel.
Recupere de travamentos que deixam você sem acesso ao terminal
Se o sistema não responder e você ficar sem uma maneira de emitir comandos para recuperar, a única coisa que você poderá fazer é reiniciar. Geralmente, você deseja evitar o ciclo manual de energia. Para esse tipo de situação, o kernel do Linux tem suporte ao Magic SysRq, que pode ser usado para reiniciar a máquina em caso de emergência.
Desde que a
CONFIG_MAGIC_SYSRQ
opção tenha sido ativada na configuração do kernel e akernel.sysrq
sysctl
opção esteja ativada, você pode emitir comandos diretamente para o kernel com combinações mágicas de teclas SysRq:Observe que Alt+ SysRqabaixo significa pressionar e segurar e Alt , em seguida, pressione e segure SysRq (normalmente a PrintScrntecla).
SIGTERM
a todos os processos, excetoinit
, dando a eles a chance de finalizar normalmenteSIGKILL
para todos os processos, excetoinit
forçando-os a terminarAlt+ SysRq+ b: reinicialização ou
Alt+ SysRq+ o: desligamento
Um mnemônico para as combinações mágicas de teclas SysRq para tentar uma reinicialização normal é:
"Reboot Even If System Utterly Broke"
Para servidores sem cabeça, há até um destino de tabelas de ip que permite sequências remotas do SysRq em uma rede.
Recuperar do estado não inicializável
Se o sistema já foi levado a um estado em que uma inicialização regular não é possível (por exemplo, como resultado de uma falha na atualização do sistema, sistema de arquivos corrompido etc.), a única maneira de acessar um console de recuperação no sistema pode ser reinicializar usando as opções apropriadas de tempo de inicialização.
Alterar os parâmetros do kernel no momento da inicialização
Alguns parâmetros do kernel (por exemplo,
audit
para ativar / desativar a auditoria do kernel) só podem ser definidos quando o kernel é carregado no momento da inicialização.fonte
Há duas vezes em que posso pensar onde eu gostaria de reiniciar:
Quando eu preciso garantir que o sistema possa inicializar no estado adequado.
Certa vez, trabalhei em um sistema que tinha algum daemon configurado enquanto estava em execução. Depois de alguns anos, uma falha de energia causou a reinicialização, mas o daemon não fazia parte do processo de inicialização e ninguém tinha idéia de como havia sido configurado anos antes. O sistema ficou inativo por dias, enquanto descobrimos como reconfigurá-lo.
Na verdade, a reinicialização é a única maneira de ter certeza de que o sistema será reiniciado corretamente após uma falha de energia.
Quando uma biblioteca do sistema foi atualizada.
Digamos que uma grande falha de segurança foi descoberta em uma biblioteca compartilhada com muitos aplicativos / servidores no sistema. Você pode atualizar a biblioteca sem reiniciar, mas quantos processos ainda estão em execução com a biblioteca não segura carregada? Você pode reiniciar meticulosamente qualquer coisa usando a biblioteca antiga (se conseguir descobrir), mas isso é propenso a erros e pode levar mais tempo do que apenas reiniciar.
A reinicialização é a melhor maneira de garantir que todos os processos em execução ainda não estejam usando a antiga biblioteca de bugs.
fonte
lsof
antes de atualizar as bibliotecas.Se você quer dizer mudanças planejadas na configuração do software e assume um hardware que funcione perfeitamente (ainda não o vi) e um software livre de bugs (você sabe ...), apenas um bug no kernel ou no driver o forçará a reiniciar. :)
Fora isso ... Não sei se seria possível substituir
init
sem alternar para o modo de usuário único e fazer alguma mágica que não é essencialmente muito diferente de uma reinicialização.fonte