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?
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?
Os sistemas que usam systemd (CentOS >=7) terão os comandos
reboot
,shutdown
e vinculados para manipular a reinicialização. O programa systemctl detectará o uso do link simbólico e executará o comando systemctl com os argumentos correspondentes. Para a diferença entre os comandos veja a página de manual para systemctl( ) pois está bem documentada.halt
systemctl
man systemctl
Para o CentOS 6, não há melhor maneira de reiniciar seu servidor usando qualquer outra coisa do que qualquer um desses comandos declarados na pergunta original:
-r
e um horário específico (ou 'now
') reinicializará seu sistema em vez de interrompê-lo após a sequência de desligamento.reboot
(>2.74) serão iniciadasshutdown
se não estiverem no nível de execução 0 ou 6.As distribuições modernas terão todas as tarefas cobertas, independentemente do comando que você estiver usando. Basicamente, todos eles iniciam o tempo de execução do desligamento de seus scripts SysV (CentOS <7) ou systemd (CentOS >=7) (vou chamá-los de scripts init para facilitar a leitura).
Desligar usando scripts de inicialização passo a passo para todos os seus serviços registrados geralmente no nível de execução 'S'. Scripts de inicialização individuais podem ter um tempo limite, como o script de inicialização do MySQL no CentOS. Quando o argumento stop for fornecido e o daemon não for encerrado em um período de tempo razoável, o script irá parar e sair dando uma falha. O processo de desligamento continuará como se nada estivesse errado, demorando um pouco mais e provavelmente imprimirá um aviso. Ao final, quando todos os scripts de inicialização 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), um arquivoSIGKILL
. Isso limpará o resto antes que uma chamada ACPI seja feita para realmente reinicializar ou desligar seu sistema.Uma exceção é usar o
reboot
comando com a-f
opção, isso pulará a execução de scripts de inicialização e reinicializará o sistema diretamente.Você estará melhor corrigindo a causa raiz de suas preocupações: o MySQL não desligando corretamente.
Muitas vezes, isso se deve à enorme carga 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 mais de 300.000 tabelas que levaram mais de uma hora para sair. Problemas semelhantes podem ser encontrados com sistemas que usam buffers enormes e disponibilidade de E/S esparsa.
Um desligamento normal do Centos 6.x deve ser feito usando o comando como root:
Isso tentará interromper todos os serviços em execução antes de desligar o servidor normalmente.
O uso desse comando também evita problemas de soquete mySQL.
Da mesma forma, para uma reinicialização graciosa:
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
Eu uso o comando 'init 6' .
O init 6 diz ao processo init para desligar todos os processos/daemons gerados conforme escrito nos arquivos init (na ordem inversa em que foram iniciados) e, por último, invocar o comando shutdown -r now para reinicializar a máquina.
Mais informações podem ser encontradas nesta questão .
Ao dar instruções remotas a usuários finais e clientes, eu os instruo a usar
poweroff
para desligar e desligar o sistema.Se eles quiserem uma reinicialização a quente, sugiro que usem o
reboot
comando.Suponho que se possa dizer que a emissão
Ctrl-Alt-Delete
também realiza isso;)Tenho a sensação de que você pode não gostar desta resposta, mas ESTA resposta inclui alguns insights que nenhum dos outros considera. . . Você escreve:
O problema aqui NÃO é o seu método de desligamento, é o software que não consegue lidar com um desligamento corretamente; 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 PRIMEIRO mima o MySql como um bebê, e quando ele está feliz em ser desligado ENTÃO desliga o sistema.
... Como uma pessoa especializada em sistemas de banco de dados há mais de 26 anos, posso dizer que só muito recentemente o MySql começou a agir em conjunto com relação à competência nas facetas mais importantes do que são os sistemas de banco de dados para - segurança / integridade de dados. Antigamente, eles davam 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, a gravação de vídeo streaming da Netflix no ponto em que você está visualizando, a fidelidade absoluta pode não ser particularmente importante - talvez, até mesmo, seus clientes GOSTEM do vídeo fazendo backup um pouco 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.