Ich sehe immer noch Leute, die die Verwendung von sync; sync; sync; sleep 30; halt
Beschwörungsformeln empfehlen, wenn sie über das Herunterfahren oder Neustarten von Linux sprechen.
Ich habe Linux von Anfang an ausgeführt, und obwohl dies in BSD 4.2 / 4.3 und SunOS 4 Tage empfohlen wurde, kann ich mich nicht erinnern, dass ich dies in den letzten zehn Jahren getan habe, in denen ich wahrscheinlich war Linux wurde möglicherweise tausende Male heruntergefahren / neu gestartet.
Ich vermute, dass dies ein Anachronismus ist, da der Kernel das Root-Dateisystem und andere wichtige Dateisysteme, die selbst im Einzelbenutzermodus (z. B. / tmp) benötigt werden, nicht mehr aushängen und synchronisieren konnte so viele Daten wie möglich auf die Festplatte.
In diesen Tagen habe ich den Verdacht, dass der Kernel intelligent genug ist, um selbst das Root-Dateisystem und das Dateisystem sauber zu entladen , ohne den relevanten Code in der Kernelquelle zu finden (siehe http://lxr.linux.no und google) um effektiv während eines normalen vor sich Aushängen ein sync (2) do shutdown
/ reboot
/ poweorff
.
Das "sync; sync; sync"
ist nur notwendig , in extremen Fällen , in denen das Dateisystem nicht aushänge sauber (zB physischer Plattenausfall) oder das System in einem Zustand ist , dass nur eine direkte Neustart zwingt (8) wird es seine Gefrieren raus (zB die Last zu ist hoch, um den Befehl zum Herunterfahren einzuplanen).
Ich sync
führe die Prozedur auch nie vor dem Abmelden von Wechseldatenträgern aus und stoße nie auf ein Problem.
Ein weiteres Beispiel - Xen ermöglicht es der DomU, einen shutdown
Befehl von Dom0 zu senden. Dies wird als "sauberes Herunterfahren" betrachtet, ohne dass sich jemand anmelden und zuerst den magischen Befehl eingeben muss sync; sync; sync
.
Habe ich recht oder hatte ich Glück für ein paar tausend Systemstillstände?
quelle
Antworten:
Der Grund, warum Benutzer
sync; sync
vor a ausgeführt wurden,halt
ist, dass derhalt
Befehl das System unter älteren Linux-Betriebssystemen nicht ordnungsgemäß herunterfährt. Der richtige Weg, dies auf SYSVr4-Systemen zu tun, besteht immer darin, init anzuweisen, auf einen anderen Runlevel zu wechseln.BSD und SunOS 4 sind keine SYSVr4-Betriebssysteme, weshalb sie sich unterscheiden. Solaris (SunOS 5) ist SYSVr4, und Linux greift Bits des SYSVr4-Standards auf, den es verwenden möchte.
Die Verwendung von halt ist auf den meisten UNIX-Systemen eine ziemlich schlechte Methode (Linux ist eine der Ausnahmen), da es die Init-Skripte nicht durchläuft, um Prozesse zu stoppen oder Datenträger abzuhängen - es stoppt lediglich den Prozessor.
Wenn Sie garantieren können, dass Sie niemals
halt
ein anderes UNIX-System als Linux verwenden werden, können Sie es auch weiterhin verwenden. Wenn die Möglichkeit besteht, dass Sie andere UNIX-Systeme verwenden, empfehle ich Ihnen, sich an die Verwendung voninit _runlevel_
oder zu gewöhnenshutdown
.Der
shutdown
Befehl weist tatsächlich deninit
Prozess seinen Lauf Ebene zu ändern Runlevel - dabei init geht dann mit dieser Ausführungsebene zugeordnet jeden des K * Init - Skripte und S * Init - Skripte auszuführen. Eines der Skripte in Run-Level 0 führt das Unmounten der Dateisysteme durch.Unter Linux das
halt
nennt Befehl nur denshutdown
Befehl , wenn die Ausführungsebene bereits 0 ist (Herunterfahren) oder 6 (Neustart) sowieso ; also kein verlust da.Durch das
umount
Aufheben der Bereitstellung eines Dateisystems werden die Daten vor dem Aufheben der Bereitstellung mit der Festplatte synchronisiert.Wenn Sie unter
sync; sync; halt
Linux gearbeitet haben, war der Dateisystemstatus in Ordnung, da die Entwickler sichergestellt haben, dasshalt
das Richtige getan wird. es wäre jedoch richtiger zu verwenden:shutdown now
quelle
halt
ruft auf,shutdown
welcher ruft auf,umount
welcher führt eine Synchronisierung durch.Die Verwendung mehrerer
sync
Aufrufe sollte dem Betriebssystem und den Festplatten Zeit geben, die Schreibwarteschlangen zu leeren."sync; sync; sync"
wurde nicht als nützlich erachtet; ein hat"sync<cr> sync<cr> sync<cr"
und die Verzögerung, während Ihr ASR-33 den Wagenrücklauf / Newline tat, stellte genügend Verzögerung zur Verfügung. Halt hat immer Sync aufgerufen. Die Frage war, ob noch genügend Zeit vorhanden sein würde, um die Warteschlangen zu leeren, bevor die Stromversorgung unterbrochen wurde.Der ursprüngliche Poster entspricht
sync; sleep 30
eher dem, was beabsichtigt war.quelle
Ich kann nur sagen, warum Sie
sync
mehrmals ausstellen würden . Der Befehl plant das Leeren auf die Festplatte, kehrt jedoch zurück, bevor das eigentliche Leeren abgeschlossen ist. Jeder nachfolgendesync
Befehl wird blockiert, bis eine ausstehende Spülung ausgeführt wird, bevor eine weitere Spülung geplant und beendet wird. Somit istsync; sync
eine synchrone Spülung gewährleistet. Sie müssen es nicht öfter als zweimal machen odersleep
in den Mix einbringen .quelle
Diejenigen von Ihnen, die uns sagen, dass "Synchronisieren; Synchronisieren; Synchronisieren" keinen Zweck hat, enthüllen Ihr Alter.
In der guten alten Zeit, bevor Unix etwas für Teenager war, mussten wir TAPE für unsere Streaming- / Backup-Anforderungen verwenden. Oft mounten wir ein bandbasiertes Dateisystem, um Backups zu streamen und so weiter. Dieses eine lange dünne Band aus magnetischem Plastikband war alles, was einige von uns hatten, um unsere Dateien auf ... zu speichern.
Mit dem Befehl 'sync; sync; sync' konnten diese alten Bandmaschinen angewiesen werden, sich bis zum Ende zurückzuspulen (vor dem Herunterfahren) - sie hatten Firmware an Bord, die den Befehl sync erhalten würde (wie alle guten Dateisysteme) tun), und wenn es fast sofort von zwei weiteren Synchronisierungspufferbefehlen gefolgt würde, würde das Bandlaufwerk dies so interpretieren, dass es "das Band zurückspulen und es aushängen" würde. Es gab keine Möglichkeit, das Bandlaufwerk über diese Methode hinaus zum Zurückspulen zu bewegen, und es blieb irgendwie hängen. Diese Angewohnheit ging dann in das Wort über, als Festplatten immer mehr verfügbar wurden. ) unser Muskelgedächtnis, weißt du! Ich glaube, es hat den Folklorestatus erreicht, kurz nachdem Bänder seltener wurden und Festplatten immer mehr verfügbar wurden, aber es hat immer noch seine Verwendung für diejenigen von uns, die Bandlaufwerke haben.
quelle