Me pregunto si puedo escribir un script que monitoreará un cambio en un archivo y ejecutará alguna acción cuando se detecte el cambio.
Explicación detallada:
- OpenVPN escribe su estado en un archivo cada 1 minuto.
- Necesito analizar este archivo de estado y tomar medidas.
- OpenVPN trunca el archivo de estado antes de escribir en él.
- Intenté escribir en una tubería con nombre, pero recibo errores indeseables (pero no fatales) en la aplicación cuando no se puede truncar la tubería.
linux
bash
openvpn
shell-scripting
davidparks21
fuente
fuente
tail -f
probablemente la forma más fácil sea aferrarse. Pero solo por anexar.Respuestas:
Barato y sucio:
Haga un bucle
stat -c %Y file
y tome medidas cuando cambie el tiempo de modificación.Probablemente mejor:
Use el servicio cron de inotify para ver los eventos de modificación de archivos y ejecutar su acción:
fuente
Eche un vistazo a incron [1] u otras cosas de inotify para activar la ejecución de su script.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
fuente
inotify sería la forma correcta de hacerlo. En esta edición de la revista LinuxForYou se ofrecen tutoriales para esta misma pregunta.
fuente
Entonces tenga un script que:
1) Comprueba el tiempo de modificación en el archivo (con stat)
2) Si el tiempo de modificación es más nuevo que la última vez que lo verificó, ha cambiado
3) Analícelo y realice su acción
4) De lo contrario, duerma durante 1 minuto y luego vuelva a colocar
fuente
Manera rápida y sucia:
fuente