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

Skript/Programm ausführen, wenn sich Datei ändert

Eine Ihrer Optionen ist das inotify-Subsystem des Linux-Kernels:

inotify ist ein Linux-Kernel-Subsystem, das Dateisysteme erweitert, um Änderungen am Dateisystem zu bemerken und diese Änderungen an Anwendungen zu melden

aber seit inotify Kernel-Land ist, brauchen Sie etwas im User-Space, um es tatsächlich zu benutzen:

  • inchron:

Der inotify Cron-Daemon (incrond) ist ein Daemon, der Dateisystemereignisse überwacht und Befehle ausführt, die in System- und Benutzertabellen definiert sind. Seine Verwendung ähnelt im Allgemeinen cron(8).

  • Gamin:

Gamin ist ein Überwachungssystem für Dateien und Verzeichnisse, das eine Teilmenge von FAM, den File Alteration Monitor, eigenständig implementiert. Als Dienst ausgeführt, ermöglicht es die Erkennung von Änderungen an einer Datei oder einem Verzeichnis. gam_server fungiert als Daemon für Gamin.

  • 'inoticoming':

inoticoming - löst Aktionen aus, wenn Dateien auf ein eingehendes Verzeichnis treffen

auf askubuntu gab es eine antwort auf eine ähnliche frage:

https://askubuntu.com/a/43848/1223


Ein weiterer schneller und schmutziger Weg, dies zu tun, ist die Verwendung von inotifywait aus dem inotify-tools-Paket (auf Fedora).

Mir gefällt diese Methode besser, weil Sie alles von einer einzigen Bash-Befehlszeile aus erledigen können. Ich benutze dies oft, wenn ich kleine Programme schreibe, um die Ergebnisse dessen zu sehen, was ich gerade gespeichert habe.

while [[ 1 ]]; do inotifywait -e modify <filename>; make && ./helloworld; done

Linux
  1. Ist es möglich herauszufinden, welches Programm oder Skript eine bestimmte Datei erstellt hat?

  2. Warum ändert sich der Inode-Wert, wenn wir im „vi“-Editor bearbeiten?

  3. Sh-Skript aus *.desktop-Datei ausführen?

  4. Wie kann ich überprüfen, ob eine Datei vorhanden ist, und einen Befehl ausführen, wenn dies nicht der Fall ist?

  5. Wie führe ich ein Shell-Skript aus, wenn sich eine Datei oder ein Verzeichnis ändert?

35 Bash-Skriptbeispiele

Wie führe ich eine .sh-Datei aus, wenn die Sitzung beginnt?

So führen Sie eine Datei ohne die Erweiterung .sh in der Shell aus

Wie führe ich einen Befehl aus, wenn sich eine Datei ändert?

Wie führe ich ein Shellscript aus, wenn ich ein USB-Gerät anschließe?

Wie wird ein Skript automatisch ausgeführt, wenn sich der Inhalt eines Verzeichnisses in Linux ändert?