Schlafende Prozesse für Dateibearbeitung

Wahrscheinlich kennen Sie das Problem – wenn eine Datei geschrieben oder geändert wird, soll etwas passieren. Wenn man das pollt, alle paar Sekunden, hat man erstens das Problem der Prozessorlast und zweitens, es dauert bis zur Ausführung im Mittel die halbe Zeit zwischen zwei Aufrufen des Scripts, das die Bearbeitung der neuen / geänderten Datei ausführen soll.

Für solche Zwecke gibt es für Linux das Tool inotifywait. Sie erhalten es mit der Installation des Pakets inotify-tools. Der Vorteil ist, das Betriebssystem wird Ihren Prozess (sofort) aufwecken, wenn auf Dateiebene eines der konfigurierten Ereignisse eintritt, bis dahin schläft Ihr Prozess und verbraucht keine Ressourcen.

Ein Beispiel – wenn in einem Verzeichnis eine PDF-Datei neu erstellt wird, soll ein Reader dafür aufgerufen werden:

#!/bin/bash
while true; do
    inotifywait -qq -e close_write /home/$USER/PDF
    if [ $? -ne 0 ]; then exit 1; fi
    fnam="$(ls -c /home/$USER/PDF/*.pdf |head -1)"
    if [ "$fnam" != "" ]; then
        xreader "$fnam" &
    fi
done

(Ruft nur eine (die neueste) PDF-Datei auf). Für xreader ersetzen Sie ggfs. den PDF-Viewer auf Ihrem System. Hier noch eine Liste der Ereignisse, die überwacht werden können: access, modify, attrib, close_write, close_nowrite, close, open, moved_to, moved_from, move, move_self, create, delete, delete_self, unmount.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert