Jan 23

Angenommen man möchte unter Linux ein Script / Programm abfeuern lassen, sobald ein File in einem Directory abgelegt wird. Wenn man z.B. ein Spoolverzeichnis bauen will, könnte das recht hilfreich sein.
Die Lösung bieten die „inotify-tools“. Flux per „apt-get install inotify-tools“ installiert, verfügt man anschliessend über zwei Programme, mit den hübschen Namen inotifywait und inotifywatch.
Diese sind gemäss manpage zu bedienen. Hier ein kleines Beispiel:

Situation: Sobald Im Directory „/spool“ eine Datei abgelegt und final geschlossen wird, soll ein kleines Perl-Script aufgerufen werden, dass die Datei verarbeitet. Als Parameter sollen dem Script das Directory sowie die Datei zur Verfügung gestellt werden.
So gehts:

#!/bin/sh
inotifywait -mrq -e close_write /spool/ –format ‚%w %f‘ |while read dir file; do
./perlscript.pl ${dir} ${file}
done

Hier eine Erklärung der, im Beispiel benutzten, Schalter / Variablen:
-m = Monitored das Directorie kontinuierlich – ohne den Schalter hört inotifywatch nach dem ersten „Trigger“ auf zu laufen
-r = Subdirectories sollen auch gemonitored werden
-q = Das Tool soll „Quiet“ laufen – also keinerlei unnötiges „gedöns“ ausgeben

%w = Filename mit Directory
%f = Filename

Viel Spass damit

[Update]: Leider funktioniert das ganze nicht mit Directories auf die ein Samba-Share gemounted wurde…

Leave a Reply

You must be logged in to post a comment.

preload preload preload