2016-08-10 4 views
0

Ich bin extrem neu zu bash Scripting, und ich muss ein Skript erstellen, die eine Funktion ausführen, wenn der Benutzer eine bestimmte Datei (/ etc/hosts) mit einem Programm öffnet.erkennen, wenn eine Datei in Bash öffnet

Wie kann ich mein Skript erkennen lassen, wenn die Datei geöffnet ist?

+3

http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes –

+0

@MarcYoung: Schöne Entdeckung in der Tat – sjsam

+0

Linux bietet die [inotify] (http://man7.org/linux/man-pages/man7/inotify.7.html) System fordert diese Art von Sachen, aber es ist nicht leicht erreichbar von einem Shell-Skript .... – gilez

Antwort

0

Wenn Sie das inotify-tools-Paket installiert haben (wie @TobySpeight oben in einem Kommentar erwähnt), dann haben Sie den inotifywait Befehl zur Verfügung, so dass Sie etwas tun können:

while inotifywait -e open /etc/hosts 
do 
    echo 'hosts was opened!' 
done 

Es gibt viele Optionen ... RTFM ... um Dateien zu wählen, etc.

Ich vermute, aber ich vermute, dass es in meinem Code oben eine Race Condition gibt. Wenn etwas die Datei öffnet, während das Skript den echo-Befehl ausführt, wird es dies nicht bemerken und könnte es während der Schleife zurücklassen. Vielleicht ist das aber egal.

Verwandte Themen