Linux: Wie beeinflusst die Änderungszeit von Dateien die Änderungszeit für Verzeichnisse und die Zugriffszeit für Verzeichnisse?

1771
Bulrush

Ich möchte mehr darüber erfahren, wie Dateizugriffszeit und Änderungszeit von Dateien sich auf Verzeichniszugriff und Änderungszeiten beziehen.

Ich habe die "erlaubten Fragen" gelesen, aber wenn es eine bessere StackExchange-Site für diese Frage gibt, lass es mich wissen. Dies ist kein Ubuntu-System, daher ist askubuntu.com nicht verfügbar.

System:

  • Red Hat Enterprise Linux 5.5.56. Nein, wir können kein Upgrade durchführen, bitte fragen Sie nicht danach.
  • Ich versuche mit Bash zu bleiben.
  • Version 4.2.27 finden

Problem: Ich möchte ein Bash-Skript erstellen, in dem ab dem aktuellen Verzeichnis, in dem das Skript ausgeführt wird, Verzeichnisse und Unterverzeichnisse aufgeführt werden, die mindestens 300 Tage lang nicht geändert wurden. Diese Verzeichnisse, die ich überprüfe, enthalten Dateien, die möglicherweise eine Änderungszeit nach der Verzeichnisänderungszeit haben. Ich möchte nur Verzeichnisnamen auflisten, die 'JOB' enthalten, aber nicht 'DIV', Groß- und Kleinschreibung beachten.

Hinweis: Unsere Verzeichnisse sind folgendermaßen angeordnet: CLS_xxx-Verzeichnisse enthalten viele GRP_xxx-Verzeichnisse. GRP_xxx-Verzeichnisse enthalten viele JOB_xxx-Verzeichnisse. JOB_dirs enthält möglicherweise viele DIV_xxx-Verzeichnisse. Während ich mich in dem Verzeichnis befinde, das alle CLS-Verzeichnisse enthält, möchte ich nur Verzeichnisse anzeigen, die JOB enthalten.

/path/to/containerdir/ CLS_xxx/ GRP_xxx/ JOB_xxx/ Files under here might be modified later than the JOB_xxx dir. DIV_xxx/ files under DIV/ might be modified later than the JOB_xxx dir. 

Klar wie Schlamm? :)

Fragen:

  • Wenn eine Datei in einem Verzeichnis namens JOB_1234 geändert wird, wie wirkt sich dies auf die Änderungszeit des Verzeichnisses aus?
  • Beeinflusst das Ändern einer Datei die Verzeichniszugriffszeit? Soll ich die Verzeichniszugriffszeit mit find verwenden?
  • Gibt es sogar einen Schalter für die Verzeichniszugriffszeit, weil ich in der Manpage meines Systems keinen gefunden habe?
  • An welcher Stelle wird die Modifikation des Verzeichnisses geändert? Wenn wir die Berechtigungen ändern? Besitzer oder Gruppe wechseln? Noch etwas?
  • Wann wird die Verzeichniszugriffszeit geändert? Wenn auf eine Datei im Verzeichnis zugegriffen oder diese geändert wird?

Ich habe die Manpage gelesen und meine Antwort nicht gefunden. Ich habe auch ungefähr 8 Seiten aus meiner Google-Suche gelesen findund dort auch keine Antwort gefunden.

Dieser Befehl eignet sich gut zum Suchen von Verzeichnismodifikationszeiten> 300 Tagen.

find . -type d -print -mtime +300 | grep -v 'DIV' | grep -P 'JOB' | sort > $outfile 

Aber meine Frage ist mehr: Was wäre, wenn Dateien im Verzeichnis in letzter Zeit geändert wurden? Wie kann ich bei einem Verzeichnis, das mit JOB_ beginnt, die aktuellste Datei- oder Änderungszeit für jedes JOB_-Verzeichnis und die Dateien in diesem JOB_-Verzeichnis finden?

Vielen Dank.

0

1 Antwort auf die Frage

1
Sami Kuhmonen

Viele Fragen, also werde ich den Teil "Wie funktioniert das?" Beantworten, nicht "Wie bekomme ich das zum Laufen?"

Dies ist abhängig vom verwendeten Dateisystem. Ich antworte auf Basis von ext [234], andere funktionieren wahrscheinlich genauso oder ähnlich.

  1. Nein, die Änderungszeit des Verzeichnisses ändert sich nicht, wenn eine Datei geändert wird. Das Verzeichnis wird in diesem Fall in keiner Weise geändert, es enthält immer noch die gleichen Dateien, Verzeichnisse usw., die mit ihm verbunden sind.

  2. Das Gleiche wie zuvor, wenn "Ändern einer Datei" das gleiche wie "Ändern einer Datei" bedeutet.

    Wenn Sie eine Datei entfernen und eine neue Datei mit demselben Namen hinzufügen oder eine andere Datei auf eine andere verschieben, wird das Verzeichnis geändert.

  3. Wenn das Verzeichnis geändert wird. Dies bedeutet, dass Inodes wie Dateien oder Unterverzeichnisse darin eingebunden bzw. deren Verknüpfung aufgehoben wird.

    Berechtigungsänderungen ändern die Änderungszeit, nicht jedoch die Änderungszeit . Das ist anders.

    Wenn Sie das Verzeichnis an eine andere Stelle verschieben, ändert sich die Änderungszeit, die Änderungszeit jedoch nicht.

  4. Die Verzeichniszugriffszeit wird beim Zugriff auf das Verzeichnis geändert, wenn es nicht deaktiviert wurde . Das Volume kann mit Noatime gemountet werden, was bedeutet, dass normalerweise keine letzte Zugriffszeit geschrieben wird. Beachten Sie, dass auch Verzeichnisdaten zwischengespeichert werden.

    Wenn Sie nur auf ein Unterverzeichnis zugreifen, ändert sich die Zugriffszeit für die übergeordneten Elemente nicht.

Wenn Sie also nach Verzeichnissen suchen, die in den letzten 300 Tagen nicht geändert wurden, können sie immer noch Dateien enthalten, die sich geändert haben. Das Erstellen oder Entfernen von Dateien ist noch nicht geschehen, aber möglicherweise wurde der Inhalt bearbeitet. Sie müssen nach Dateien prüfen, wie Sie sagten.