Se você está procurando apenas uma possibilidade e deseja permanecer principalmente no shell, em vez de usar awk
ou 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_command
sempre que "o servidor estiver ativo " aparecer no arquivo de log. Para várias possibilidades, talvez você possa largar o grep
e, em vez disso, usar um case
dentro do while
.
A capital -F
diz tail
para observar o arquivo de log ser girado; ou seja, se o arquivo atual for renomeado e outro arquivo com o mesmo nome substituir, ele tail
passará para o novo arquivo.
A --line-buffered
opção diz grep
para liberar seu buffer após cada linha; caso contrário, my_command
poderá não ser alcançado em tempo hábil (assumindo que os logs tenham linhas de tamanho razoável).
tail -F
a rotação de log punho - ou seja,my.log
torna-se completa e se move paramy.log.1
e seu processo cria um novomy.log