web-dev-qa-db-fra.com

Le meilleur moyen de redémarrer gracieusement CentOS?

J'ai toujours utilisé la commande:

shutdown -r now

Cependant, cela provoque parfois des problèmes avec MySQL.

Quelle est la façon la plus gracieuse de redémarrer CentOS?

J'ai vu:

reboot

et

halt

Comment puis-je redémarrer doucement la machine?

89
User

Il n'y a pas de meilleur moyen de redémarrer votre serveur en utilisant autre chose que ces commandes.

  • shutdown est le moyen le plus courant d'arrêter votre système. Ajout de l'argument -r et une heure spécifique (ou 'now') redémarreront votre système au lieu de l'arrêter après la séquence d'arrêt.
  • reboot est un arrêt circulaire de wrapper qui effectue une maintenance du disque dur (synchronisation et/ou mise en mode veille et pas vraiment pertinent).
  • Les nouvelles versions de reboot (> 2.74) lanceront shutdown si elles ne sont pas au niveau d'exécution 0 ou 6.
  • La plupart des scripts d'initialisation appellent halt pour se connecter tmp .

Les distributions modernes auront toutes les tâches couvertes quelle que soit la commande que vous utilisez. Fondamentalement, ils lancent tous l'arrêt de l'exécution de vos scripts SysV (CentOS <7) ou systemd (CentOS> = 7) (je les appellerai scripts init pour faciliter en train de lire).

Arrêter à l'aide de scripts init étape par étape arrête tous vos services enregistrés sous runlevel 'S'. Les scripts d'initialisation individuels peuvent avoir un délai d'expiration, comme le script d'initialisation MySQL dans CentOS. Lorsque l'argument stop est donné et que le démon ne sera pas arrêté dans un bon laps de temps, le script s'arrêtera et quittera en donnant un échec. Le processus d'arrêt se poursuivra comme si de rien n'était, ne prenant qu'un peu plus de temps et probablement imprimant un avertissement. À la fin, lorsque tous les scripts d'initialisation seront exécutés, l'inévitable se produira: tous les processus toujours en cours d'exécution obtiendront un SIGTERMsignal et, après quelques secondes (2 ou 5), un SIGKILL. Cela nettoiera le reste avant qu'un appel ACPI soit vraiment fait pour redémarrer ou arrêter votre système.

Une exception consiste à utiliser la commande reboot avec la commande -f option, cela sautera l'exécution des scripts init et redémarrera le système directement.

Vous feriez mieux de corriger la cause première de vos soucis: MySQL ne s'arrête pas correctement.

Cela est souvent dû à la charge de travail considérable qui doit être effectuée avant que le démon puisse être quitté en toute sécurité. J'ai eu une fois une instance MySQL avec +300 000 tables qui a mis plus d'une heure pour quitter. Des problèmes similaires peuvent être rencontrés avec les systèmes utilisant d'énormes tampons et une faible disponibilité des E/S.

104
Joffrey

Un arrêt progressif de Centos 6.x doit être effectué en utilisant la commande en tant que root:

shutdown -h now

Cela tentera d'arrêter tous les services en cours d'exécution avant d'arrêter le serveur normalement.

L'utilisation de cette commande empêche également les problèmes de socket mySQL.

De même, pour un redémarrage gracieux:

reboot -h now

Vous pouvez lire une réponse précédente sur une question similaire ici:

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

38
GeckoSEO

J'utilise la commande 'init 6'.

init 6 indique au processus init d'arrêter tous les processus/démons générés tels qu'ils sont écrits dans les fichiers init (dans l'ordre inverse de leur démarrage) et enfin d'appeler la commande shutdown -r now pour redémarrer la machine.

Plus d'informations peuvent être trouvées sur cette question .

3
Itai Ganot

Lorsque je donne des instructions à distance aux utilisateurs finaux et aux clients, je leur demande d'utiliser poweroff pour arrêter et mettre le système hors tension.

S'ils veulent un redémarrage à chaud, je leur suggère d'utiliser la commande reboot.

Je suppose que l'on pourrait dire que émettant Ctrl-Alt-Delete accomplit également ceci;)

2
ewwhite

J'ai le sentiment que vous n'aimerez peut-être pas cette réponse, mais CETTE réponse comprend un aperçu qu'aucun des autres ne considère. . . Vous écrivez:

J'ai toujours utilisé la commande:

arrêt -r maintenant

Cependant, cela provoque parfois des problèmes avec MySQL.

Le problème ici n'est PAS votre méthode d'arrêt, c'est le logiciel qui ne peut pas gérer correctement un arrêt; MySql.

La SEULE façon dont vous pouvez vraiment résoudre ce problème est de remplacer MySql (PostgreSql est un excellent remplacement) OR écrivez votre propre script d'arrêt qui PREMIÈRE codifie MySql comme un bébé, et quand il est heureux d'être arrêté ALORS arrête le système.

... En tant que personne spécialisée dans les systèmes de bases de données depuis plus de 26 ans, je peux vous dire que ce n'est que très récemment que MySql a commencé à se ressaisir en ce qui concerne la compétence dans les aspects les plus importants de ce que sont les systèmes de bases de données. pour - sécurité/intégrité des données. Auparavant, ils accordaient moins d'attention à ces aspects et plus d'attention aux performances. Mais à quoi servent de bonnes performances si vous perdez des données? Sur certaines applications, comme, par exemple, l'enregistrement vidéo en streaming Netflix à quel moment vous regardez, la fidélité absolue peut ne pas être particulièrement importante - peut-être même vos clients AIMENT que la vidéo sauvegarde un peu après un échec. Mais dans un système bancaire, c'est un désastre aux proportions épiques. Seul le propriétaire des données peut savoir ce qui lui convient.

0
Richard T