Zastanawiam się, czy mogę napisać skrypt, który będzie monitorował zmianę w pliku i wykonał jakieś działanie po wykryciu zmiany.
Szczegółowe wyjaśnienie:
- OpenVPN zapisuje swój status do pliku co 1 minutę.
- Muszę przeanalizować ten plik statusu i podjąć działanie.
- OpenVPN obcina plik statusu przed zapisaniem do niego.
- Próbowałem pisać do nazwanego potoku, ale dostaję niepożądane (ale nie śmiertelne) błędy w aplikacji, gdy nie może on obciąć potoku.
linux
bash
openvpn
shell-scripting
davidparks21
źródło
źródło
tail -f
jest prawdopodobnie najłatwiejszym sposobem. Ale tylko do dołączania.Odpowiedzi:
Tanie i brudny sposób:
Zapętlaj
stat -c %Y file
i podejmuj działania, gdy zmieni się czas modyfikacji.Prawdopodobnie lepiej:
Użyj usługi cron inotify, aby obserwować zdarzenia modyfikacji plików i uruchomić akcję:
źródło
Spójrz na incron [1] lub inne inotify-stuff, aby uruchomić skrypt.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
źródło
Inotify byłby właściwym sposobem na zrobienie tego. Samouczki w tym wydaniu magazynu LinuxForYou dotyczące tego właśnie pytania.
źródło
Więc miej skrypt, który:
1) Sprawdza czas modyfikacji pliku (ze stat)
2) Jeśli czas modyfikacji jest nowszy niż ostatnio sprawdzony, to się zmienił
3) Analizuj go i wykonuj swoje działanie
4) W przeciwnym razie śpij przez 1 minutę, a następnie uruchom ponownie
źródło
Szybki i brudny sposób:
źródło