O problema com o watch -n 1 tail -n 15 /var/log/syslog | grep -v -E 'pattern1|pattern2'
, eu acho , é que ele executa tail -n 15 /var/log/syslog
dentro de watch
e, em seguida, canaliza o resultado para grep
. Isso quase certamente faz com que a saída intermediária seja armazenada em buffer de tal forma que você não veja o que você espera (pelo menos, não quando você espera).
Provavelmente, existe uma maneira de obter o que você deseja com o uso inteligente da opção stdbuf
e / ou --line-buffered
grep, mas uma maneira mais simples é executar todo o pipeline em watch
:
watch -n 1 'tail -n 15 /var/log/syslog | grep -v -E "pattern1|pattern2"'