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.