Si solo está buscando una posibilidad y desea permanecer principalmente en el shell en lugar de usar awk
o perl
, puede hacer algo como:
tail -F /path/to/serverLog |
grep --line-buffered 'server is up' |
while read ; do my_command ; done
... que se ejecutará my_command
cada vez que aparezca " servidor activo " en el archivo de registro. Para múltiples posibilidades, tal vez podría soltar el grep
y en su lugar usar un case
dentro del while
.
La mayúscula -F
le dice tail
que esté atento a la rotación del archivo de registro; es decir, si el archivo actual se renombra y otro archivo con el mismo nombre toma su lugar, tail
cambiará al nuevo archivo.
La --line-buffered
opción le dice grep
que vacíe su búfer después de cada línea; de lo contrario, my_command
no se puede llegar a tiempo (suponiendo que los registros tengan líneas de tamaño razonable).
tail -F
para manejar la rotación de registros, es decir,my.log
se llena y avanzamy.log.1
y su proceso crea un nuevomy.log