linux - manejo - Shellscript para monitorear un archivo de registro si la palabra clave se dispara y luego ejecuta un comando?
lista completa de comandos linux pdf (5)
Batter y simple:
tail -f log.txt | egrep -m 1 "error"
echo "Found error, do sth."
...
¿Hay alguna manera económica de monitorear un archivo de registro como tail -f log.txt
, y luego, si aparece algo como [error]
, ejecute un comando?
Gracias.
También encontré que puedes usar awk para monitorear el patrón y realizar alguna acción cuando se encuentra el patrón:
tail -fn0 logfile | awk ''/pattern/ { print | "command" }''
Esto ejecutará el comando cuando se encuentre el patrón en el registro. El comando puede ser cualquier comando de Unix, incluidos los scripts de shell o cualquier otra cosa.
Un enfoque aún más robusto es monit . Esta herramienta puede monitorear muchas cosas, pero una de ellas es que rastreará fácilmente uno o más registros, combinará contra expresiones regulares y luego activará un script. Esto es particularmente útil si tiene una colección de archivos de registro para ver o más de un evento para activar.
Solución automatizada simple que cubre una gran cantidad de escenarios:
USO:
logrobot localhost [default-dir],fixer,[exit-codes],[command/script-to-run-per-exit-code] [feature] [logfile] [age] [str-1] [str-2] [WARN] [CRIT] [tag] [option]
EJEMPLO:
logrobot localhost /tmp/logXray,fixer,0y-1y-2y,0-uname,1-who,2-uptime autonda /var/log/kern.log 60m ''error'' ''.'' 1 2 app_err_monitor -ndshow
Con esta herramienta, puede monitorear patrones específicos en un archivo de registro y luego activar un comando o script cuando los patrones se encuentran ... ¡o NO se encuentran!
Los scripts o comandos se pueden configurar para que se ejecuten en función de los umbrales y los códigos de salida.
La herramienta se puede descargar directamente here .
tail -fn0 logfile | /
while read line ; do
echo "$line" | grep "pattern"
if [ $? = 0 ]
then
... do something ...
fi
done