GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist Mv Atomic auf den Fs?

Wie kann ich überprüfen, ob mv ist atomar auf meinem fs (ext4)?

Das Betriebssystem ist Red Hat Enterprise Linux Server Version 6.8.

Wie kann ich das generell überprüfen? Ich habe mich umgesehen und nicht herausgefunden, ob mein Betriebssystem Standard-POSIX ist.

Akzeptierte Antwort:

Interessanterweise scheint die Antwort zu lauten:„Es kommt darauf an“.

Um es klar zu sagen, mv angegeben ist

Die mv Dienstprogramm soll Aktionen ausführen, die rename() entsprechen Funktion

Die Spezifikation der Umbenennungsfunktion besagt:

Dieses rename() Funktion entspricht für reguläre Dateien der
des ISO-C-Standards. Seine Aufnahme hier erweitert diese
Definition um Aktionen für Verzeichnisse und spezifiziert das Verhalten,
wenn der neue Parameter eine bereits existierende Datei benennt. Diese
Spezifikation erfordert, dass die Aktion der Funktion atomar ist.

Aber spätestens die ISO C Spezifikation für rename() Zustände:

7.21.4.2 Das rename Funktion

Zusammenfassung

#include <stdio.h>
int rename(const char *old, const char *new);

Beschreibung

Das rename Funktion bewirkt die Datei, deren Name der String ist, auf den old zeigt fortan unter dem Namen
bekannt sein, der durch die Zeichenkette gegeben wird, auf die new zeigt . Die Datei mit dem Namen old ist unter diesem Namen
nicht mehr erreichbar. Wenn eine durch den String benannte Datei
auf new zeigt existiert vor dem Aufruf von rename Funktion, das
Verhalten ist implementierungsdefiniert.

Rückgaben

Das rename Die Funktion gibt null zurück, wenn die Operation erfolgreich ist, und ungleich null, wenn sie fehlschlägt. In diesem Fall ist die Datei, wenn sie
vorher existierte, immer noch unter ihrem ursprünglichen Namen bekannt.

Beachten Sie überraschenderweise, dass es keine explizite Anforderung für die Atomarität gibt. Es kann an anderer Stelle im neuesten öffentlich verfügbaren C-Standard erforderlich sein, aber ich konnte es nicht finden. Wenn jemand eine solche Anforderung findet, sind Bearbeitungen und Kommentare mehr als willkommen.

Laut Linux-Manpage:

Wenn newpath bereits existiert, wird es atomar ersetzt, so dass
es keinen Punkt gibt, an dem ein anderer Prozess versucht, auf newpath zuzugreifen wird feststellen, dass es fehlt. Allerdings wird es wahrscheinlich ein
Fenster geben, in dem sowohl oldpath und newpath beziehen sich auf die
umbenannte Datei.

Die Linux-Manpage beansprucht den Ersatz der Datei ist atomar.

Testen und Verifizieren Diese Atomarität könnte jedoch sehr schwierig sein, wenn Sie so weit gehen müssen. Sie sind sich nicht sicher, was Sie mit Ihrer Verwendung von „Wie kann ich überprüfen, ob mv atomar ist“ meinen? Möchten Sie Anforderungen/Spezifikationen/Dokumentationen, dass es atomar ist, oder müssen Sie tatsächlich testen? es?

Verwandte:Die PID eines Fensters erhalten, indem Sie darauf klicken?

Beachten Sie auch, dass das Obige annimmt die beiden Operanden-Dateinamen befinden sich im selben Dateisystem. Ich kann keine Standardbeschränkung für mv finden Dienstprogramm, um dies durchzusetzen.


Linux
  1. Die Bash‘?

  2. Durchführen von atomaren Schreibvorgängen in einer Datei in Bash?

  3. Alle Dateien bis zum Match anzeigen?

  4. Linux - Ersetzen von Leerzeichen in den Dateinamen

  5. Ist rename() atomar?

Einführung in das Linux-Dateisystem

Verwenden der SSH-Konfigurationsdatei

So benennen Sie eine Datei (en) in Linux um

Die Hosts-Datei unter Linux

5 Möglichkeiten, die Anzahl der Zeilen in einer Datei zu zählen

Wie benenne ich eine Datei unter Linux um?