Si solo está buscando una posibilidad y desea permanecer principalmente en el shell en lugar de usar awko 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_commandcada vez que aparezca " servidor activo " en el archivo de registro. Para múltiples posibilidades, tal vez podría soltar el grepy en su lugar usar un casedentro del while.
La mayúscula -Fle dice tailque 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, tailcambiará al nuevo archivo.
La --line-bufferedopción le dice grepque vacíe su búfer después de cada línea; de lo contrario, my_commandno se puede llegar a tiempo (suponiendo que los registros tengan líneas de tamaño razonable).
tail -Fpara manejar la rotación de registros, es decir,my.logse llena y avanzamy.log.1y su proceso crea un nuevomy.log