'tail -f' por um período de tempo específico [duplicado]

24

Eu preciso executar tail -f em um arquivo de log, mas apenas por um período de tempo específico, por exemplo 20 segundos, e depois sair. Qual seria uma maneira elegante de conseguir isso?

    
por Tuyen Pham 18.09.2018 / 09:22

2 respostas

53

Com o tempo limite do GNU:

timeout 20 tail -f /path/to/file
    
por 18.09.2018 / 09:26
18

Por completo, sem timeout , você pode fazer isso:

#!/bin/sh
tail -f /var/log/syslog &
me=$!
trap "kill $me" INT TERM HUP QUIT EXIT
sleep 20

A linha trap garante que quando o script ou shell pai for finalizado (chegaremos ao final do script (EXIT), Ctrl-C (INT), enviando um SIGTERM via kill , efetuando logout do shell (HUP ), etc) então o tail é eliminado.

    
por 18.09.2018 / 14:21

Tags