Se você está procurando apenas uma possibilidade e deseja permanecer principalmente no shell, em vez de usar awkou perl, pode fazer algo como:
tail -F /path/to/serverLog |
grep --line-buffered 'server is up' |
while read ; do my_command ; done
... que será executado my_commandsempre que "o servidor estiver ativo " aparecer no arquivo de log. Para várias possibilidades, talvez você possa largar o grepe, em vez disso, usar um casedentro do while.
A capital -Fdiz tailpara observar o arquivo de log ser girado; ou seja, se o arquivo atual for renomeado e outro arquivo com o mesmo nome substituir, ele tailpassará para o novo arquivo.
A --line-bufferedopção diz greppara liberar seu buffer após cada linha; caso contrário, my_commandpoderá não ser alcançado em tempo hábil (assumindo que os logs tenham linhas de tamanho razoável).
tail -Fa rotação de log punho - ou seja,my.logtorna-se completa e se move paramy.log.1e seu processo cria um novomy.log