Le meilleur moyen de redémarrer gracieusement CentOS?

82

J'ai toujours utilisé la commande:

shutdown -r now

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

Quel est le moyen le plus gracieux de redémarrer CentOS?

J'ai vu:

reboot

et

halt

Comment puis-je redémarrer doucement la machine?

Utilisateur
la source
3
rebootest essentiellement un alias de shutdown -r... alors ... oui.
Nathan C
Mon message a-t-il répondu à votre question ou avez-vous besoin de savoir autre chose?
Joffrey
Je ne peux pas commenter ici pour l'instant, mais je voulais placer ici un avertissement concernant le redémarrage. Si l'instance est sur Amazon EC2, le redémarrage de -h va maintenant créer une instance, par conséquent, ne le faites jamais. Si vous devez arrêter ou redémarrer l'ordinateur, utilisez plutôt l'interface en ligne d'Amazon et non le shell. Si vous créez votre instance en brique, vous pouvez l'arrêter, détacher le volume, créer une instance distincte et y attacher le volume, sans détacher le premier volume fourni avec la nouvelle instance. Ensuite, vous devrez ssh dans la nouvelle instance, monter l'ancien volume et extraire vos fichiers.
Kloddant
en fait, vous souhaitez exécuter sync: sync;avant d'exécuter shutdown -rafin que toutes les E / S de fichier soient synchronisées. Je pense que cela mysql
résoudra

Réponses:

96

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

  • L’arrêt est le moyen le plus courant d’arrêter votre système. Ajouter l'argument -ret une heure spécifique (ou ' now') redémarrera votre système au lieu de l'arrêter après la séquence d'arrêt.
  • reboot est un arrêt de la machine qui effectue un peu de maintenance sur le disque dur (synchronisation et / ou mise en veille non pertinente).
  • Les nouvelles versions de reboot(> 2.74) seront lancées shutdownsi elles ne sont pas au niveau d'exécution 0 ou 6.
  • La plupart des scripts d'initialisation appellent stop pour créer un journal dans utmp .

Les distributions modernes couvriront toutes les tâches quelle que soit la commande que vous utilisez. Fondamentalement, ils lancent tous le temps d’arrêt de vos scripts SysV (CentOS <7) ou systemd (CentOS> = 7) (je les appellerai des scripts init pour en faciliter la lecture).

La fermeture à l’aide des scripts d’initialisation arrête pas à pas tous vos services enregistrés sous le niveau d' exécution généralement «S». Les scripts init individuels peuvent avoir un délai d'expiration, comme le script init MySQL dans CentOS. Lorsque l'argument stop est donné et que le démon ne sera pas arrêté assez longtemps, le script s'arrête et se ferme en cas d'échec. Le processus d'arrêt se poursuivra comme si de rien n'était, prenant juste un peu plus longtemps et émettant probablement un avertissement. À la fin, lorsque tous les scripts d'initialisation seront exécutés, l'inévitable se produira: tous les processus en cours d'exécution recevront un SIGTERM signal et, après quelques secondes (2 ou 5), a SIGKILL. Cela va nettoyer le reste avant qu'un appel ACPI ne soit effectué pour réellement redémarrer ou éteindre votre système.

Une exception est l'utilisation de la rebootcommande avec l' -foption, cela ignorera l'exécution des scripts d'initialisation et redémarrera directement le système.

Vous ferez mieux de réparer la cause première de vos inquiétudes: MySQL ne s’arrête pas correctement.

Cela est souvent dû à la charge de travail énorme qui doit être effectuée avant que le démon puisse être quitté en toute sécurité. Une fois, j’avais une instance MySQL avec + 300 000 tables qui mettait plus d’une heure à sortir. Des problèmes similaires peuvent être rencontrés avec les systèmes utilisant des tampons énormes et une disponibilité d'E / S clairsemée.

Joffrey
la source
31

Un arrêt gracieux de Centos 6.x doit être effectué à l'aide de 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 évite également les problèmes de socket mySQL.

De même, pour un redémarrage en douceur:

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

GeckoSEO
la source
7
Je pense que vous voulez dire shutdown -r now, ou peut-être juste reboot. La rebootcommande n'a pas d' -hoption.
Michael Hampton
1
Bonjour Michael, Centos 6.x a en effet la possibilité d’arrêter les services avant de redémarrer. "shutdown -h now" est un arrêt normal, et "reboot -h now" est un redémarrage normal. Essayez-le sur votre serveur Centos ...
GeckoSEO
1
Oh? Et à quoi sert cette -hoption? Ce n'est pas dans la page de manuel.
Michael Hampton
2
Vraiment? Avez-vous de la documentation pour cela? Parce que, premièrement, c'est ce qui se rebootpasse sans -h . Deuxièmement, pour autant que je sache, ce n'est pas documenté de cette manière.
Michael Hampton
2
Le document que vous venez de relier indique exactement ce que je vous ai dit! rebootn'a pas d' -hoption, shutdownfait.
Michael Hampton
2

Lorsque je donne des instructions à distance aux utilisateurs finaux et aux clients, je leur ordonne d'utiliser poweroffpour éteindre et éteindre le système.

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

Je suppose que l’on pourrait dire que l’ émissionCtrl-Alt-Delete accomplit aussi ceci;)

ewwhite
la source
Je ne suis pas d'accord avec cette réponse. Le redémarrage et l’arrêt (Ctrl-Alt-Suppr) est contraignant et peut, dans certains environnements, tels que ceux exécutant MySQL, provoquer un "verrouillage" du socket, ce qui nécessite alors la création d’un nouveau socket ou la suppression / déplacement du socket existant avant de recréer un nouveau. un.
GeckoSEO le
1
@GeckoSEO C'était une suggestion facétieuse faisant référence au danger de permettre l'activation de Ctrl-Alt-Suppr sur des serveurs Linux.
ewwhite
Par contre, ma réponse n’était pas facétieuse, j’essayais simplement de clarifier la réponse pour ceux qui tentent de résoudre cette question. S'il vous plaît voir ma réponse précédente, j'espère que cela aide.
GeckoSEO le
2

J'utilise la commande 'init 6'.

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

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

Itai Ganot
la source
0

J'ai le sentiment que cette réponse ne vous plaira peut-être pas, mais CETTE réponse inclut des idées qu'aucun autre ne considère. . . Vous écrivez:

J'ai toujours utilisé la commande:

shutdown -r now

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

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

La SEULE façon dont vous pouvez vraiment vous occuper est de remplacer MySql (PostgreSql est un excellent remplaçant) OU d'écrire votre propre script de fermeture qui FIRST coddle MySql comme un bébé, et lorsqu'il est heureux d'être arrêté, puis arrête le système.

... En tant que spécialiste des systèmes de base de données depuis plus de 26 ans, je peux vous affirmer que ce n'est que très récemment que MySql a commencé à se mettre en forme en ce qui concerne la compétence dans les aspects les plus importants de ce que sont les systèmes de base de données. pour - la sécurité / intégrité des données. Auparavant, ils accordaient moins d'attention à ces aspects et davantage à la performance. Mais à quoi servent d'excellentes performances si vous perdez des données? Sur CERTAINES applications, telles que, par exemple, l'enregistrement vidéo en streaming Netflix à un moment donné, la fidélité absolue n'est peut-être pas particulièrement importante. Peut-être même que vos clients AIMENT AIMER la sauvegarde vidéo après une défaillance. 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.

Richard T
la source
1
Remplacer mysql juste parce que des problèmes de redémarrage ou d'arrêt du système? Et la dernière partie de la solution ne contribue en rien à résoudre le problème de la personne qui pose la question
ftrujillo
Cette réponse est biaisée contre mysql sans sources ni références. Ce n'est pas utile dans le contexte de la question; tout logiciel dont l’exécution prend trop de temps peut entraîner des problèmes de redémarrage (en particulier avec systemd et ses délais d’attaque agressifs).
Harald