106 votes

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 manière la plus gracieuse de redémarrer CentOS ?

J'ai vu :

reboot

y

halt

Comment puis-je redémarrer doucement la machine ?

4 votes

reboot est essentiellement un alias de shutdown -r ...donc...ouais.

0 votes

Mon post a-t-il répondu à votre question, ou avez-vous besoin de savoir autre chose ?

0 votes

Je ne peux pas encore commenter ici, mais je voulais mettre en garde contre le redémarrage. Si l'instance est sur Amazon EC2, faire reboot -h maintenant bridera l'instance, donc ne le faites jamais. Au lieu de cela, si vous devez arrêter ou redémarrer, faites-le via l'interface en ligne d'Amazon, pas via le Shell. Si vous briquez votre instance, 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. Vous devrez alors vous connecter à la nouvelle instance, monter l'ancien volume et récupérer vos fichiers.

116voto

stens97 Points 58

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

  • arrêt est le moyen le plus courant d'arrêter votre système. En ajoutant l'argument -r et 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.
  • redémarrer est une enveloppe autour de l'arrêt qui fait un peu de maintenance du disque dur (synchronisation et/ou mise en mode veille et pas vraiment pertinent).
  • Les nouvelles versions de reboot (>2,74) seront à l'origine shutdown s'il n'est pas au niveau d'exécution 0 ou 6.
  • La plupart des init scripts appellent arrêt pour faire une connexion utmp .

Les distributions modernes couvriront toutes les tâches, quelle que soit la commande que vous utilisez. Fondamentalement, elles lancent toutes l'exécution de l'arrêt de votre système d'exploitation. SysV (CentOS <7) ou systemd (CentOS >=7) scripts (Je les appellerai init scripts pour faciliter la lecture).

Arrêter en utilisant init scripts étape par étape arrêter tous vos services enregistrés sous habituellement. niveau d'exécution 'S'. Les init scripts individuels peuvent avoir un délai d'attente, comme l'init MySQL scripts dans CentOS. Lorsque l'argument stop est donné et que le démon ne sera pas arrêté dans un laps de temps raisonnable, le scripts s'arrêtera et sortira en donnant un échec. Le processus d'arrêt continuera comme si de rien n'était, prenant seulement un peu plus de temps et imprimant probablement un avertissement. A la fin, lorsque tous les scripts d'init seront exécutés, l'inévitable se produira : tous les processus encore en cours d'exécution obtiendront un SIGTERM signal et, après quelques secondes (2 ou 5), une SIGKILL . Cela nettoiera le reste avant qu'un ACPI L'appel est effectué pour redémarrer ou arrêter réellement votre système.

Une exception est l'utilisation de la reboot avec la commande -f cela évitera d'exécuter les scripts d'init scripts et redémarrera directement le système.

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

Cela est souvent dû à l'énorme charge de travail 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 pris plus d'une heure pour sortir. Des problèmes similaires peuvent être rencontrés avec des systèmes utilisant d'énormes tampons et une disponibilité d'E/S éparse.

0 votes

Désolé de paraître ignorant, mais vous avez l'air de savoir de quoi vous parlez, alors j'aimerais vous demander :) Que signifie "appeler halt pour faire un log dans utmp" ? En suivant le lien, on obtient "utmp maintient une comptabilité complète de l'état actuel du système, l'heure de démarrage du système (utilisée par uptime), l'enregistrement des connexions des utilisateurs à quels terminaux, les déconnexions, les événements du système, etc." mais cela ne me dit pas vraiment ce que c'est ou ce que vous voulez dire par votre commentaire.

1 votes

@Neek Pas besoin d'excuses pour poser des questions ! L'arrêt est une combinaison complexe de commandes qui dépend de l'état du système. Parmi toutes les commandes ('halt', 'reboot', 'shutdown'), cette commande est l'un des moyens d'arrêter le système (ou d'appeler un autre script dans ce cas). L'argument spécial '-w' écrira une entrée utmp et est observé pour être utilisé dans les init-script de CentOS 6. Un peu d'inception : halt appelle shutdown, shutdown appelle init-script et init-script utilisera 'halt -w' pour écrire le timestamp de l'arrêt. Ce genre de ruse est un excellent argument pour l'utilisation de systemd.

0 votes

systemctl reboot

42voto

Paul Points 11

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

shutdown -h now

Cela permettra d'arrêter tous les services en cours d'exécution avant d'arrêter le serveur de manière élégante.

L'utilisation de cette commande permet également d'éviter 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 à une question similaire ici :

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

10 votes

Je pense que vous voulez dire shutdown -r now ou peut-être simplement reboot . Le site reboot ne dispose pas d'une -h option.

1 votes

Salut Michael, Centos 6.x a effectivement l'option d'arrêter les services avant le redémarrage. L'option "shutdown -h now" permet d'arrêter les services en douceur et l'option "reboot -h now" permet de les redémarrer en douceur. Essayez-le sur votre serveur Centos...

1 votes

Oh ? Et qu'est-ce que ça fait -h option faire ? Elle n'est pas dans la page du manuel.

4voto

Itai Ganot Points 10219

J'utilise la commande 'init 6'.

init 6 indique au processus init d'arrêter tous les processus/daemons créés, comme indiqué dans les fichiers init (dans l'ordre inverse de leur démarrage) et enfin d'invoquer la commande shutdown -r now pour redémarrer la machine.

Vous trouverez de plus amples informations sur cette question .

2voto

ewwhite Points 193555

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 fonction reboot Befehl.

Je suppose qu'on pourrait dire que émission de Ctrl-Alt-Delete permet également d'atteindre cet objectif ;)

0 votes

Je ne suis pas d'accord avec cette réponse. Le redémarrage et l'arrêt (Ctrl-Alt-Suppression) sont forcés et peuvent, dans certains environnements, tels que ceux utilisant mySQL, provoquer un "verrouillage" de la socket, ce qui nécessite alors de créer une nouvelle socket, ou de supprimer/déplacer la socket existante avant d'en recréer une nouvelle.

1 votes

@GeckoSEO C'était une suggestion facétieuse faisant référence à la danger d'autoriser l'activation de Ctrl-Alt-Suppression sur les serveurs Linux.

0 votes

Ma réponse, en revanche, n'était pas facétieuse, j'essayais simplement de clarifier la réponse pour ceux qui tentent de résoudre cette question. Veuillez consulter ma réponse précédente, j'espère qu'elle vous aidera.

2voto

Richard T Points 1128

J'ai l'impression que vous n'aimerez pas cette réponse, mais CETTE réponse contient des informations qu'aucune des autres réponses ne prend en compte. . . Vous écrivez :

J'ai toujours utilisé la commande :

shutdown -r now

Cependant, cela entraîne parfois des problèmes avec MySQL.

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

La SEULE façon de résoudre ce problème est de remplacer MySql (PostgreSql est un excellent remplacement) OU d'écrire votre propre script d'arrêt script qui dorlote MySql comme un bébé, et quand il est heureux d'être arrêté, il 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é à s'organiser en ce qui concerne la compétence dans les facettes les plus importantes de ce à quoi servent les systèmes de bases de données - la sécurité / l'intégrité des données. Auparavant, ils accordaient moins d'attention à ces aspects et plus d'attention aux performances. Mais à quoi servent des performances élevées si vous perdez des données ? Sur CERTAINES applications, comme, par exemple, l'enregistrement de vidéos en streaming Netflix à quel moment vous les regardez, la fidélité absolue n'est peut-être pas particulièrement importante - peut-être même que vos clients aiment que la vidéo remonte un peu après une panne. 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 est bon pour lui.

2 votes

Remplacer mysql juste parce que les problèmes redémarrent ou arrêtent le système ? Et la dernière partie de la solution ne contribue pas à résoudre le problème de la personne qui pose la question.

0 votes

Cette réponse est biaisée contre mysql sans sources ni références. Elle n'est pas utile dans le contexte de la question ; tout logiciel qui prend trop de temps pour sortir peut causer des problèmes au redémarrage (surtout avec systemd et ses délais agressifs).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X