2016-06-19 14 views
0

Ich möchte inotifywait verwenden, um einen speziellen Ordner zu überwachen, um die Dateien mit Handbrake zu konvertieren. Ich verschiebe die Datei manuell in den Ordner monitor_folder.Monitor-Ordner mit inotifywait in bash für Warteschlange

Das einfaches Skript wie folgt aussehen:

inotifywait -mrq -e moved -e create --format %f /media/user/monitor_folder | while read FILE 
do 
    sleep 2 
    HandBrakeCLI -i /media/user/monitor_folder/$FILE -o /media/user/finished/$FILE -e x264 -q 20 -B 160 
done 

Das so lange gut funktioniert ich nach jedem convertion von Handbrake jede Datei in den überwachten Ordner.

Inotifywait scheint den Ordner nicht zu überwachen, während HandBrake funktioniert. Selbst wenn ich zwei Dateien gleichzeitig in den überwachten Ordner lege: nur die erste Datei wird von HandBrake konvertiert.

Wie kann ich den Ordner überwachen, um ihn mit Handbrake in die Warteschlange zu stellen?

BTW: das echte Skript ist viel länger auf den Befehl ist nicht nur eine einzige Linie.

+0

Das Skript wird unabhängig von der Zeit jeder Bewegung gezeigt arbeiten (da 'inotifywait' läuft parallel mit der Schleife), und es funktioniert für mich (nach' moved' zu 'move Wechsel '); Dein Fehler muss also im echten Skript sein. – Armali

Antwort

0

Dies ist, was ich denke, wird Ihnen helfen, bevor Sie unten lesen. how to execute a command whenever a file changes

Haben Sie darüber nachgedacht

-d verwenden, --daemon

Gleiche wie --monitor, außer im Hintergrund laufen die Protokollierung von Ereignissen in einer Datei, dass durch angegeben werden muss - outfile. Impliziert --syslog.

Statt

-M, --monitor

Statt verlass nach einem einzigen Ereignis empfangen, führen auf unbestimmte Zeit. Das Standardverhalten besteht darin, nach dem Auftreten des ersten Ereignisses zu beenden.

erlauben Dies würde Sie die Dateien, die von inotifywait

Auch

„-r, --recursive

Uhr alle Unterverzeichnisse aller Verzeichnisse als Argumente

bestanden aufgenommen zu überprüfen. Uhren werden rekursiv auf unbegrenzte Tiefe gesetzt Symbolische Links werden nicht durchlaufen Neu angelegte Unterverzeichnisse werden ebenfalls überwacht

Warnung: Wenn Sie diese Option verwenden, während das Stammverzeichnis eines großen Baumes beobachten, es dauern kann eine ganze Weile, bisalle inotify Uhren etabliert sind, und Veranstaltungen werden in dieser Zeit nicht empfangen werden. Da eine Inotify-Uhr pro Unterverzeichnis eingerichtet wird, ist es möglich, dass die maximale Anzahl von Inotify-Uhren pro Benutzer erreicht wird. Das Standardmaximum ist 8192; Es kann durch Schreiben in/proc/sys/fs/inotify/max_user_watches erhöht werden." Ref inotifywait

sollten jedoch robuste Anwendungen für die Tatsache zulassen, dass Fehler in der Überwachungslogik oder Rennen der Art unter beschrieben die Cache nicht mit dem Dateisystem Zustand verlassen. Es ist wahrscheinlich ratsam, einige Konsistenzprüfung, und erstellen Sie den Cache wenn Inkonsistenzen festgestellt werden zu tun.

Ref inotify

hoffte, das hilft