Ich frage mich, ob ich ein Skript schreiben kann, das eine Änderung in einer Datei überwacht und eine Aktion ausführt, wenn die Änderung erkannt wird.
Ausführliche Erklärung:
- OpenVPN schreibt seinen Status alle 1 Minute in eine Datei.
- Ich muss diese Statusdatei analysieren und Maßnahmen ergreifen.
- OpenVPN schneidet die Statusdatei vor dem Schreiben ab.
- Ich habe versucht, in eine Named Pipe zu schreiben, aber es werden unerwünschte (aber nicht schwerwiegende) Fehler in der App angezeigt, wenn die Pipe nicht abgeschnitten werden kann.
linux
bash
openvpn
shell-scripting
davidparks21
quelle
quelle
tail -f
ist wahrscheinlich der einfachste Weg. Aber nur zum Anhängen.Antworten:
Cheap und schmutzig weg:
Wiederholen
stat -c %Y file
und Maßnahmen ergreifen, wenn sich die Änderungszeit ändert.Wahrscheinlich besser:
Verwenden Sie den inotify cron-Dienst, um nach Ereignissen für Dateiveränderungen zu suchen und Ihre Aktion auszuführen:
quelle
Schauen Sie sich Incron [1] oder anderes Inotify-Zeug an, um die Ausführung Ihres Skripts auszulösen.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
quelle
Inotify wäre der richtige Weg, dies zu tun. Zu dieser Frage finden Sie in einigen Ausgaben des LinuxForYou-Magazins Anleitungen.
quelle
Also haben Sie ein Skript, das:
1) Die Überwachung der Änderungszeit auf die Datei (mit stat)
2) Wenn die Änderungszeit neuer ist als wenn zuletzt geprüft wurde geändert
3) Parse es und führen Sie Ihre Aktion
4) Else Schlaf für 1 Minute und dann reloop
quelle
Schnell und dreckig unterwegs:
quelle