Melhor maneira de reiniciar normalmente o CentOS?


82

Eu sempre usei o comando:

shutdown -r now

No entanto, às vezes isso causa problemas no MySQL.

Qual é a maneira mais elegante de reiniciar o CentOS?

Eu tenho visto:

reboot

e

halt

Como posso reiniciar suavemente a máquina?


3
rebooté essencialmente um apelido para shutdown -r... então ... sim.
Nathan C

Minha postagem respondeu à sua pergunta ou você precisa saber mais alguma coisa?
precisa

Ainda não posso comentar aqui, mas eu queria colocar um aviso aqui sobre a reinicialização. Se a instância estiver no Amazon EC2, a reinicialização -h agora afetará a instância, portanto, nunca faça isso. Em vez disso, se você precisar desligar ou reiniciar, faça-o através da interface online da Amazon, não do shell. Se você bloquear sua instância, poderá detê-la, desconectar o volume, criar uma instância separada e anexar o volume a ela, sem desconectar o primeiro volume que acompanha a nova instância. Então você precisará ssh na nova instância, montar o volume antigo e retirar seus arquivos.
kloddant

na verdade, você deseja executar sync: sync;antes de executar shutdown -rpara que todas as E / S de arquivo sejam sincronizadas. Eu suspeito que isso também vai resolver o problema com #mysql
user3629249

Respostas:


96

Não há melhor maneira de reiniciar o servidor usando qualquer outra coisa além de qualquer um desses comandos.

  • O desligamento é a maneira mais comum de parar o sistema. Adicionar o argumento -re um horário específico (ou ' now') reiniciará o sistema em vez de interrompê-lo após a sequência de desligamento.
  • reboot é um encerramento de invólucro que faz alguma manutenção no disco rígido (sincronizando e / ou colocando no modo de espera e não é realmente relevante).
  • Novas versões de reboot(> 2.74) serão iniciadas shutdownse não estiverem no nível de execução 0 ou 6.
  • A maioria dos scripts init chama halt para fazer logon utmp .

As distribuições modernas terão todas as tarefas cobertas, independentemente do comando que você está usando. Basicamente, todos eles iniciam o tempo de execução do desligamento dos scripts SysV (CentOS <7) ou systemd (CentOS> = 7) (os chamarei de scripts init para facilitar a leitura).

O desligamento usando scripts init passo a passo interrompe todos os seus serviços registrados no nível de execução geralmente 'S'. Os scripts init individuais podem ter um tempo limite, como o script init do MySQL no CentOS. Quando o argumento de parada é fornecido e o daemon não será encerrado em uma quantidade razoável de tempo, o script será interrompido e sairá causando uma falha. O processo de desligamento continuará como se nada estivesse errado, demorando um pouco mais e provavelmente imprima um aviso. No final, quando todos os scripts init forem executados, o inevitável acontecerá: todos os processos ainda em execução receberão um SIGTERM sinal e, após alguns segundos (2 ou 5), a SIGKILL. Isso limpará o restante antes que uma chamada ACPI seja feita para realmente reiniciar ou desligar o sistema.

Uma exceção é usar o rebootcomando com a -fopção, isso ignorará a execução de scripts init e reiniciará o sistema diretamente.

Você estará melhor corrigindo a causa raiz de suas preocupações: o MySQL não está sendo desligado corretamente.

Geralmente, isso ocorre devido à carga massiva de trabalho que precisa ser feita antes que o daemon possa ser encerrado com segurança. Certa vez, tive uma instância do MySQL com +300.000 tabelas que levaram mais de uma hora para sair. Problemas semelhantes podem ser encontrados em sistemas que usam buffers enormes e disponibilidade de E / S esparsa.


31

Um desligamento normal do Centos 6.x deve ser feito usando o comando como root:

shutdown -h now

Isso tentará parar todos os serviços em execução antes de desligar o servidor normalmente.

O uso deste comando também evita problemas de soquete do mySQL.

Da mesma forma, para uma reinicialização normal:

reboot -h now

Você pode ler uma resposta anterior sobre uma pergunta semelhante aqui:

https://stackoverflow.com/questions/20407292/centos-another-mysql-daemon-already-running-with-the-same-unix-socket


7
Eu acho que você quer dizer shutdown -r now, ou talvez apenas reboot. O rebootcomando não tem uma -hopção.
Michael Hampton

1
Olá Michael, o Centos 6.x realmente tem a opção de interromper os serviços antes de reiniciar. "shutdown -h now" é um desligamento normal e "reboot -h now" é uma reinicialização normal. Experimente-o em seu servidor Centos ...
GeckoSEO

1
Oh? E o que essa -hopção faz? Não está na página do manual.
Michael Hampton

2
Realmente? Você tem alguma documentação para isso? Porque, primeiro, é isso que rebootacontece sem -h . Segundo, não está documentado dessa maneira, pelo que sei.
Michael Hampton

2
O documento que você acabou de vincular indica exatamente o que eu tenho lhe dito! rebootnão tem -hopção, shutdownfaz.
Michael Hampton

2

Ao fornecer instruções remotas para usuários finais e clientes, instruo-os a usar poweroffpara desligar e desligar o sistema.

Se eles querem uma reinicialização a quente, sugiro que usem o rebootcomando

Suponho que se possa dizer que a emissãoCtrl-Alt-Delete também realiza isso;)


Eu não concordo com esta resposta. A reinicialização e o desligamento (Ctrl-Alt-Delete) são fortes e podem, em alguns ambientes, como os que executam o mySQL, causar um "bloqueio" de soquete, o que exige a criação de um novo soquete ou a exclusão / movimentação do soquete existente antes de recriar um novo 1.
GeckoSEO

1
@GeckoSEO Foi uma sugestão faceta referente ao perigo de permitir que Ctrl-Alt-Delete seja ativado nos servidores Linux.
ewwhite

minha resposta, por outro lado, não foi ridícula, eu estava simplesmente tentando esclarecer a resposta para aqueles que estão tentando resolver esta questão. Por favor, veja minha resposta anterior, espero que ajude.
GeckoSEO

2

Eu uso o comando 'init 6'.

O init 6 diz ao processo init para encerrar todos os processos / daemons gerados conforme gravados nos arquivos init (na ordem inversa em que foram iniciados) e, por último, invocar o comando shutdown -r now para reiniciar a máquina.

Mais informações podem ser encontradas sobre esta questão .


0

Sinto que você pode não gostar dessa resposta, mas ESTA resposta inclui algumas dicas que nenhum dos outros considera. . . Você escreve:

Eu sempre usei o comando:

shutdown -r now

No entanto, às vezes isso causa problemas no MySQL.

O problema aqui NÃO é o seu método de desligamento, é o software que não pode lidar adequadamente com um desligamento; MySql.

A única maneira de realmente resolver isso é substituir o MySql (o PostgreSql é um ótimo substituto) OU escrever seu próprio script de desligamento que PRIMEIRAMENTE codifique o MySql como um bebê e, quando estiver feliz em ser desligado, desligará o sistema.

... Como uma pessoa especializada em sistemas de banco de dados há mais de 26 anos, posso dizer-lhe que apenas em tempos muito recentes o MySql começou a agir em relação à competência nas facetas mais importantes do que são sistemas de banco de dados. para - segurança / integridade dos dados. Antigamente, eles prestavam menos atenção a esses aspectos e mais atenção ao desempenho. Mas de que adianta um ótimo desempenho se você perder dados? Em alguns aplicativos, como, por exemplo, no streaming de vídeo da Netflix, gravação em que ponto você está assistindo, a fidelidade absoluta pode não ser particularmente importante - talvez até seus clientes gostem do backup do vídeo após uma falha. Mas em um sistema bancário, é um desastre de proporções épicas. Somente o proprietário dos dados pode saber o que é certo para eles.


1
Substitua o mysql apenas por problemas ao reiniciar ou desligar o sistema? E a última parte da solução não contribuem em nada para resolver o problema da pessoa que faz a pergunta
ftrujillo

Esta resposta é tendenciosa contra o mysql sem fontes ou referências. Não é útil no contexto da pergunta; qualquer software que demore muito para sair pode causar problemas na reinicialização (especialmente com o systemd e seus tempos limite agressivos).
Harald
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.