Интересно, смогу ли я написать сценарий, который будет отслеживать изменения в файле и выполнять какие-либо действия при обнаружении изменения.
Детальное объяснение:
- OpenVPN записывает свой статус в файл каждую 1 минуту.
- Мне нужно проанализировать этот файл состояния и принять меры.
- OpenVPN усекает файл состояния перед записью в него.
- Я попытался записать в именованный канал, но я получаю нежелательные (но не фатальные) ошибки в приложении, когда оно не может усечь канал.
linux
bash
openvpn
shell-scripting
davidparks21
источник
источник
tail -f
вероятно, самый простой способ это сделать. Но только для добавления.Ответы:
Дешевый и грязный способ:
Цикл
stat -c %Y file
и принять меры, когда время изменения изменяется.Наверное, лучше:
Используйте службу inotify cron для отслеживания событий модификации файла и запуска своего действия:
источник
Взгляните на incron [1] или другие inotify-вещи, чтобы запустить выполнение вашего скрипта.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
источник
Inotify будет правильным способом сделать это. Учебные руководства даны в некоторых выпусках журнала LinuxForYou по этому вопросу.
источник
Итак, есть сценарий, который:
1) Проверяет время модификации файла (со статистикой).
2) Если время модификации новее, чем когда последний раз проверялось, оно изменилось.
3) Разобрать его и выполнить действие.
4) Оставить сон на 1 минуту, а затем перезапустить.
источник
Быстрый и грязный способ:
источник