Derzeit unter Ubuntu Linux, aber ich habe dies auch auf anderen Betriebssystemen bemerkt. Anscheinend kann jeder Benutzer den sync
Befehl ausführen - aber warum ist das so? Ich kann nur den Nachteil erkennen: System verlangsamt sich aufgrund unnötiger Schreibvorgänge.
Warum kann jeder Benutzer ausführen sync
?
/bin/sync
als Shell ausgeführt, sodass Sie synchronisieren können, ohne sichsync
-calls zu verkürzen (z. B. unter HP-Unix). Der Grund besteht darin, unnötige Wartezeiten zu vermeiden, da Massen ausstehender Schreibvorgänge gleichzeitig auf die Festplatte geschrieben werden.Antworten:
Es gibt viele Möglichkeiten für einen nicht privilegierten Benutzer, ein System zu verlangsamen, und die Synchronisierung ist bei weitem nicht effizienter. Auf der anderen Seite ist es eine legitime Anforderung, die Dateisystemdaten auf die Festplatte zu übertragen, sodass es übermäßig wäre, Benutzern (und damit ihren Prozessen) zu verbieten, dies zu tun.
In jedem Fall bin ich nicht einverstanden mit Ihrer Aussage "Unnötige Schreibvorgänge auf der Festplatte". Diese Schreibvorgänge sind sicherlich notwendig und werden ohnehin nach kurzer Zeit automatisch erfolgen.
Es gibt sogar keine Garantie dafür, dass der Synchronisierungsaufruf je nach Implementierung überhaupt etwas Bestimmtes bewirkt. Das Aufrufen der Synchronisierung ist, wie im POSIX-Standard definiert , nur ein "Vorschlag" für das Betriebssystem, seine Dateisystem-Caches zu leeren. Es erzwingt nicht unbedingt das sofortige Löschen. Genauer gesagt, die Aufrufe fordern das Betriebssystem auf, einen Cache-Flush zu planen. Es gibt jedoch keine Garantie dafür, dass dieser vor dem bereits geplanten Zeitpunkt erfolgt, obwohl die Linux-Implementierung darauf wartet, dass er vor der Rückkehr erfolgt.
Darüber hinaus würde das mehrmalige Aufrufen der Synchronisierung die Systeme nicht so stark verlangsamen, da die Caches leer sind, wenn kein Prozess aktiv in Dateien schreibt, sodass die Synchronisierung ein No-Op ist.
Wenn Sie wirklich verhindern möchten, dass Benutzer die Synchronisierung auf Ihrem System ausführen, können Sie einfach die folgenden Befehle ausführen:
Dies würde von den Benutzern weitgehend unbemerkt bleiben und hat keine negativen Auswirkungen, außer bei Personen, die nur die Synchronisierung ausführen und dann Speichergeräte (z. B. USB-Stick) entfernen, ohne sie zu entfernen, aber diese Benutzer haben sich ohnehin schon dumm verhalten.
Beachten Sie, dass ich den vorherigen Link / bin / sync mit / bin / true nicht empfehlen würde.
sync
ist sicherlich in einigen Fällen nützlich. Wenn Sie beispielsweise befürchten, dass in Kürze ein brutales Herunterfahren (Stromausfall, Systempanik usw.) eintreten könnte, würde dies dazu beitragen, den Inhalt des Dateisystems zu erhalten. Dies nenne ich eine legitime Anfrage.quelle
sync
Binärdatei ruft lediglich diesync()
Funktion auf. Wie Bonsi Scott sagte, fragen Sie also wirklich, warum der Kernel nicht privilegierte Benutzer aufrufen lässtsync()
umount
, dass unabhängig vom Betriebssystem immer die Puffer geleert werden (es sei denn, die Festplatte ist weg ...), anstatt dasssync
dies je nach Betriebssystem garantiert wird. Beachten Sie, dass Linux daraufsync
wartet, dass der Flush wirksam wird, sodass auch vertrauenswürdig ist.sync
kann dem System keinen Schaden zufügen. Es kann es verlangsamen, aber nicht mehr als das Ausführen von Programmen, die auf die Festplatte zugreifen. Warum sollte es eingeschränkt werden?Es gibt einen guten Grund, jedem Benutzer das Ausführen zu erlauben
sync
. Dies ist erforderlich, wenn einige Vorgänge ausgeführt werden müssen, auch wenn das System abstürzt oder die Stromversorgung verliert. Stellen Sie sich beispielsweise einen Mail Transfer Agent vor, der eine E-Mail empfängt. Sobald die Datei mit der E-Mail in den Spool geschrieben wurde, ruft sie aufsync
und antwortet erst dann dem sendenden Computer, der ihn darüber informiert, dass die E-Mail empfangen wurde. Wenn es nicht anruftsync
und der empfangende Computer kurz nach dem Senden der Empfangsbenachrichtigung, aber vor dem Festschreiben der Datei auf die Festplatte, die Stromversorgung verliert, geht die E-Mail verloren.Betriebssysteme verzögern das Schreiben von Datenträgern aus Effizienzgründen. Sie können nicht wissen, wann eine Anwendung das Schreiben wirklich benötigt. So erhalten Anwendungen die Möglichkeit, das Betriebssystem anzuweisen, jetzt mit
sync(1)
undsync(2)
und zu schreibenfsync(2)
.quelle