Executando comandos consecutivamente com base na saída de log

1

Eu tenho um roteiro escrito para iniciar meus serviços um por um. Depois que cada serviço terminar, ele deverá executar o próximo comando e aguardar até que o primeiro comando seja executado para que eu tenha dado este comando:

wait_for "Server started in RUNNING mode"
wait_for "socket listener started on port"

Mas não está tomando essa lógica

wait_for() {
    res=0
    while [[ ! $res -gt 0 ]]
    do
        res=$(tail -5 "$START_LOG" | fgrep -c "$1")
        sleep 5
    done
}
    
por marketing riptonsolutions 29.04.2015 / 21:32

1 resposta

0

wait_for() {
    ( tail -n5 -F "$START_LOG" 2>/dev/null & ) | fgrep -l "$1" >/dev/null
}

-F significa seguir mesmo se o log for girado

& envia tail para o segundo plano, portanto, o shell pai não espera que ele morra. O processo ficará suspenso por um tempo até que a próxima mensagem seja registrada.

    
por 29.04.2015 / 22:39

Tags