Com o tempo limite do GNU:
timeout 20 tail -f /path/to/file
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 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.