Die beste Möglichkeit, CentOS ordnungsgemäß neu zu starten?


82

Ich habe immer den Befehl verwendet:

shutdown -r now

Manchmal verursacht dies jedoch MySQL-Probleme.

Was ist die eleganteste Art, CentOS neu zu starten?

Ich habe gesehen:

reboot

und

halt

Wie kann ich den Computer sanft neu starten?


3
rebootist im Wesentlichen ein Pseudonym für shutdown -r... also ... ja.
Nathan C

Hat mein Beitrag Ihre Frage beantwortet oder müssen Sie noch etwas wissen?
Joffrey

Kann hier noch nicht kommentieren, aber ich wollte hier eine Warnung zum Neustart platzieren. Wenn sich die Instanz auf Amazon EC2 befindet, wird die Instanz durch Ausführen von "reboot -h now" blockiert. Tun Sie dies also niemals. Wenn Sie den Computer herunterfahren oder neu starten müssen, verwenden Sie stattdessen die Online-Oberfläche von Amazon und nicht die Shell. Wenn Sie Ihre Instanz blockieren, können Sie sie stoppen, das Volume trennen, eine separate Instanz erstellen und das Volume an sie anhängen, ohne das erste Volume zu trennen, das mit der neuen Instanz geliefert wurde. Dann müssen Sie in die neue Instanz ssh, das alte Volume mounten und Ihre Dateien davon entfernen.
26.

Eigentlich möchten Sie ausführen, sync: sync;bevor Sie ausgeführt werden, shutdown -rdamit alle Datei-E / A synchronisiert werden. Ich vermute, dies wird auch das Problem mit mysql
klären

Antworten:


94

Es gibt keine bessere Möglichkeit, den Server mithilfe anderer Befehle neu zu starten.

  • Das Herunterfahren ist die häufigste Methode, um Ihr System anzuhalten. Durch Hinzufügen des Arguments -rund einer bestimmten Zeit (oder ' now') wird Ihr System neu gestartet, anstatt es nach dem Herunterfahren anzuhalten.
  • reboot ist ein Wrapper Round Shutdown, der einige Wartungsarbeiten an der Festplatte durchführt (Synchronisieren und / oder Versetzen in den Standby-Modus und nicht wirklich relevant).
  • Neue Versionen von reboot(> 2.74) werden gestartet, shutdownwenn sie nicht in Runlevel 0 oder 6 sind.
  • Die meisten Init-Skripte rufen halt auf, um sich bei utmp anzumelden .

In modernen Distributionen werden alle Aufgaben abgedeckt, unabhängig davon, welchen Befehl Sie verwenden. Grundsätzlich initiieren sie alle die Shutdown-Laufzeit Ihrer SysV- (CentOS <7) oder systemd- (CentOS> = 7) Skripte (ich werde sie zur Erleichterung des Lesens Init-Skripte nennen).

Das schrittweise Herunterfahren mit Init-Skripten stoppt alle Ihre Dienste, die unter dem Runlevel 'S' registriert sind . Einzelne Init-Skripte können ein Timeout haben, wie das MySQL-Init-Skript in CentOS. Wenn das Argument stop angegeben wird und der Dämon nicht in angemessener Zeit heruntergefahren wird, wird das Skript angehalten und beendet, was zu einem Fehler führt. Der Vorgang des Herunterfahrens wird fortgesetzt, als ob nichts falsch wäre. Er dauert nur ein bisschen länger und gibt möglicherweise eine Warnung aus. Am Ende, wenn alle Init-Skripte ausgeführt sind, passiert das Unvermeidliche: Alle noch laufenden Prozesse erhalten ein SIGTERM Signal und nach einigen Sekunden (2 oder 5) a SIGKILL. Dies räumt den Rest auf, bevor ein ACPI- Aufruf ausgeführt wird, um Ihr System wirklich neu zu starten oder herunterzufahren.

Eine Ausnahme ist die Verwendung des rebootBefehls mit der -fOption. Dadurch wird die Ausführung von Init-Skripten übersprungen und das System direkt neu gestartet.

Sie sind besser dran, die Ursache Ihrer Sorgen zu beheben: MySQL wird nicht ordnungsgemäß heruntergefahren.

Dies ist häufig auf die enorme Arbeitslast zurückzuführen, die ausgeführt werden muss, bevor der Dämon sicher beendet werden kann. Ich hatte einmal eine MySQL-Instanz mit +300.000 Tabellen, deren Beenden über eine Stunde dauerte. Ähnliche Probleme treten bei Systemen mit großen Puffern und geringer E / A-Verfügbarkeit auf.


31

Ein ordnungsgemäßes Herunterfahren von Centos 6.x sollte mithilfe des Befehls als root erfolgen:

shutdown -h now

Dadurch wird versucht, alle ausgeführten Dienste zu stoppen, bevor der Server ordnungsgemäß heruntergefahren wird.

Die Verwendung dieses Befehls verhindert auch Probleme mit dem mySQL-Socket.

Ebenso für einen ordnungsgemäßen Neustart:

reboot -h now

Sie können eine frühere Antwort zu einer ähnlichen Frage hier lesen:

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


7
Ich denke du meinst shutdown -r now, oder vielleicht nur reboot. Der rebootBefehl hat keine -hOption.
Michael Hampton

1
Hallo Michael, Centos 6.x hat in der Tat die Möglichkeit, die Dienste vor dem Neustart anzuhalten. "shutdown -h now" ist ein ordnungsgemäßes Herunterfahren, und "reboot -h now" ist ein ordnungsgemäßer Neustart. Versuchen Sie es auf Ihrem Centos-Server ...
GeckoSEO

1
Oh? Und was macht diese -hOption? Es ist nicht in der Manpage.
Michael Hampton

2
"Ja wirklich?" Haben Sie eine Dokumentation dazu? Denn erstens rebootkommt das ohne aus -h . Zweitens ist es, soweit ich das beurteilen kann, überhaupt nicht so dokumentiert.
Michael Hampton

2
Das Dokument, das Sie gerade verlinkt haben, gibt genau das an, was ich Ihnen erzählt habe! reboothat keine -hwahl, shutdowntut.
Michael Hampton

2

Wenn ich Endbenutzern und Kunden Anweisungen per Fernzugriff erteile, weise ich sie an poweroff, das System herunterzufahren und auszuschalten.

Wenn sie einen Warmstart wünschen, schlage ich vor, dass sie den rebootBefehl verwenden.

Ich nehme an, man könnte sagen, dass dies auch durch das AusstellenCtrl-Alt-Delete erreicht wird;)


Ich bin mit dieser Antwort nicht einverstanden. Neustart und Herunterfahren (Strg-Alt-Entf) sind erzwungen und können in einigen Umgebungen, z. B. unter mySQL, eine Socket- "Sperre" verursachen, die das Erstellen eines neuen Sockets oder das Löschen / Verschieben des vorhandenen Sockets erfordert, bevor ein neuer erstellt wird einer.
GeckoSEO

1
@GeckoSEO Es war ein scherzhafter Hinweis auf die Gefahr , die Aktivierung von Strg-Alt-Entf auf Linux-Servern zuzulassen .
Ewwhite

Meine Antwort hingegen war nicht scherzhaft, ich habe lediglich versucht, die Antwort für diejenigen zu klären, die versuchen, diese Frage zu lösen. Bitte sehen Sie meine frühere Antwort, ich hoffe, es hilft.
GeckoSEO

2

Ich benutze den Befehl 'init 6'.

init 6 weist den init-Prozess an, alle in den init-Dateien gespeicherten Prozesse / Daemons herunterzufahren (in umgekehrter Reihenfolge, in der sie gestartet wurden) und zuletzt den Befehl shutdown -r now aufzurufen, um den Computer neu zu starten.

Weitere Informationen finden Sie zu dieser Frage .


0

Ich habe das Gefühl, dass Ihnen diese Antwort vielleicht nicht gefällt, aber DIESE Antwort enthält einige Erkenntnisse, die keiner der anderen berücksichtigt. . . Du schreibst:

Ich habe immer den Befehl verwendet:

Herunterfahren -r jetzt

Manchmal verursacht dies jedoch MySQL-Probleme.

Das Problem hierbei ist NICHT Ihre Methode zum Herunterfahren, sondern die Software, die das Herunterfahren nicht richtig handhabt. MySql.

Die einzige Möglichkeit, die Sie wirklich ansprechen können, ist das Ersetzen von MySql (PostgreSql ist ein großartiger Ersatz) ODER das Schreiben eines eigenen Shutdown-Skripts, das MySql ZUERST wie ein Baby verschlüsselt. Wenn es glücklich ist, heruntergefahren zu werden, fährt DANN das System herunter.

... Als eine Person, die sich seit über 26 Jahren auf Datenbanksysteme spezialisiert hat, kann ich Ihnen sagen, dass MySql erst in jüngster Zeit begonnen hat, sich in Bezug auf die Kompetenz in den wichtigsten Facetten der Datenbanksysteme zusammenzuschließen für - Datensicherheit / Integrität. Früher haben sie diesen Aspekten weniger Beachtung geschenkt und der Leistung mehr Aufmerksamkeit geschenkt. Aber was bringt eine gute Leistung, wenn Sie Daten verlieren? In EINIGEN Anwendungen, z. B. bei der Aufzeichnung von Netflix-Streaming-Videos zu dem Zeitpunkt, an dem Sie sie ansehen, ist die absolute Wiedergabetreue möglicherweise nicht besonders wichtig. Vielleicht möchten Ihre Kunden sogar, dass das Video nach einem Fehler ein wenig gesichert wird. Aber in einem Bankensystem ist es eine Katastrophe von epischem Ausmaß. Nur der Dateneigentümer kann wissen, was für ihn richtig ist.


1
Ersetzen Sie MySQL nur, weil Probleme beim Neustart oder Herunterfahren des Systems? Und der letzte Teil der Lösung trägt nichts zur Lösung des Problems der Person bei, die die Frage stellt
ftrujillo

Diese Antwort ist gegen MySQL ohne Quellen oder Verweise voreingenommen. Es ist im Zusammenhang mit der Frage nicht nützlich; Jede Software, deren Beenden zu lange dauert, kann beim Neustart Probleme verursachen (insbesondere bei systemd und seinen aggressiven Timeouts).
Harald
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.