Watchdir

Aus open7x0.org

Wechseln zu: Navigation, Suche

Datei: /usr/bin/watchdir

Das eigens von Andreas.Koch für die M740AV entwickelte Kommando watchdir ermöglicht es, Änderungen an Dateien in einem Verzeichnis zu beobachten. Es überwacht signalgesteuert, ob reguläre Dateien in einem Verzeichnis erstellt, entfernt, umbenannt oder modifiziert wurden (Mit ein paar kleineren Einschränkungen s.u.). Die Änderungen der Dateien im Verzeichnis werden auf stdout protokoliert.

In Verbindung mit stdin2tcp können Programme auf Änderungen der Dateien reagieren. Ein Anwendung besteht in der Beoabachtung des Timer-Verzeichnisses, um manuelle Änderungen der Timer-Daten mitzubekommen. Dazu wird es vom TV-Browser-Plugin des CridManagers verwendet.

Inhaltsverzeichnis

Aufruf

watchdir [-m] [<zu überwachendes Verzeichnis>]

Ohne Parameter überwacht watchdir das aktuelle Verzeichnis auf erstellen, entfernen und umbenennen von regulären Dateien. Wird als erster (!) Parameter "-m" angegeben, werden die Dateien in dem Verzeichnis zusätzlich auf Modifikationen überwacht.

Ausgabe

Watchdir gibt auf stdout folgendes zeilenbasiert jeweils gefolgt von einer Leerzeile aus:

  • Wenn <dateiname> erstellt wurde:
    CREATE
    <dateiname>
  • Wenn <dateiname> gelöscht wurde:
    DELETE
    <dateiname>
  • Wenn <dateiname> in <dateiname2> umbenannt wurde:
    RENAME
    <dateiname1>
    <dateiname2>
  • Wenn <dateiname> um <zeit> zuletzt schreibend geändert wurde:
    MODIFY
    <dateiname>
    <unix_timestamp>
    <zeit>

Einschränkungen

RENAME bezieht sich nur auf Umbennungen von Dateien, die im überwachten Verzeichnis sind und bleiben. Wird eine Datei in das Verzeichnis geschoben, entspricht dies einem CREATE; wird sie aus dem Verzeichnis geschoben einem DELETE. MODIFY wird direkt nur für (echte) Schreibzugriffe ausgeben. Es kommt jedoch vor, dass Änderungen an der Modifikationszeit (etwa durch "touch") einer Datei mit einer späteren anderen Änderung als MODIFY ausgeben werden.

Durch Nebenläufigkeiten kann es vorkommen, dass

  • nicht alle zwischen MODIFYs ausgegeben werden. (die letzte Modifikation,aber in jedem Fall).
  • eine schnelle Folge von DELETE a und CREATE b (wenn die neue Datei die selbe Inode wie die gelöschte Datei belegt) als RENAME a b MODIFY b ausgeben werden.
  • externe Änderungen auf Netzwerkimporten werden unterumständen nicht erkannt (bzw. erst dann wenn lokal eine Änderung stattgefunden hat).

Programmquelle

Das Programm ist in C geschrieben. Die Quellen des Programmes sind im SVN abgelegt:

Das Programm wurde mit der alten toolchain übersetzt.

Benötigte Firmware

Das Programm ist in Lemmis Firmware enthalten. Die Überwachung des Timer-Verzeichnis kann durch die »logging«-Einstellungen in der Datei /var/etc/lemmi-settings.txt aktiviert werden.

Ansonsten kann es auf allen Firmware-Versionen mit telnet-Zugang verwendet werden.

Kommandos in »Lemmis Firmware« 

Persönliche Werkzeuge