Como Kusalananda menciona, o pipeline nunca sairá e, portanto, $log
nunca obterá um valor.
Além disso, você pode ver grep
de saída do buffer porque não vai stdout
.
Portanto, você precisa processar os dados ao vivo fazendo com que o pipeline seja alimentado diretamente em um loop de shell, semelhante a:
tail -f $logFile | grep --line-buffered ms | rev | cut -c 3- | rev | awk '{ if($NF > $monitorTreshold) { print $0 } }' | while read q
do
echo "Query : $q"
done
Esteja avisado, em shells como bash
, então as variáveis configuradas dentro desse loop não serão visíveis fora do loop. Em ksh93
, eles serão definidos. Se você precisar definir essas variáveis em bash
, talvez seja necessário analisar os co-processos.