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

Inotify verwenden, um den Zugriff auf eine Datei zu überwachen?

Ich möchte einen Trigger haben und wenn von einem Prozess auf eine bestimmte Datei zugegriffen wird, möchte ich benachrichtigt werden (dh ein Skript sollte ausgeführt werden). Wenn ich das richtig verstehe, könnte man das mit inotify erreichen .

Wenn ich eine Datei /foo/bar.txt habe wie würde ich inotify einrichten diese Datei überwachen?

Ich verwende Debian Wheezy mit Kernel 3.12 (mein Kernel unterstützt Inotify)

Akzeptierte Antwort:

Laut Gilles auf Super User:

Einfach, mit inotifywait (installieren Sie die inotify-tools Ihrer Distribution Paket):

while inotifywait -e close_write myfile.py; do ./myfile.py; done

Dies hat eine große Einschränkung:wenn irgendein Programm myfile.py ersetzt mit einer anderen Datei, anstatt in die vorhandene myfile zu schreiben , inotifywait wird sterben. Die meisten Editoren arbeiten so.

Um diese Einschränkung zu umgehen, verwenden Sie inotifywait im Verzeichnis:

while true; do
  change=$(inotifywait -e close_write,moved_to,create .)
  change=${change#./ * }
  if [ "$change" = "myfile.py" ]; then ./myfile.py; fi
done

Linux
  1. So prüfen Sie den Dateizugriff unter Linux

  2. Prozess bei Dateiänderung in Linux neu starten

  3. gleichzeitiger zugriff auf datei linux

  4. Verwenden von nc zum Übertragen großer Dateien

  5. temporärer Dateispeicherort bei Verwendung von tmpfile() in C

Verwenden der SSH-Konfigurationsdatei

So überwachen Sie Dateiänderungen mit fswatch unter Linux

Gewusst wie:Eine Einführung in die Verwendung von Git

Übertragen Sie Dateien mit WinSCP

So öffnen Sie eine Datei in vim mit Pipe

Erkennen Sie kontinuierlich neue Dateien mit inotify-Tools in mehreren Verzeichnissen rekursiv