O ponto de tail -f
é correr para sempre até que seja explicitamente morto, então você terá que tentar matá-lo.
Se houver alguma lógica que determine quando o processo tail
deve ser eliminado, obtenha o ID do processo de tail
e organize o acionamento de sua eliminação quando desejado. Por exemplo, se você quiser matá-lo depois de um minuto:
tail -f file.log &
tail_pid=$!
sleep 60
kill $tail_pid
do_more_stuff
Se você quiser terminar tail
mas não o shell script quando o usuário pressionar Ctrl + C , interceptar o sinal SIGINT . Você precisa definir o trap para uma string não vazia (qualquer valor não vazio fará, mesmo que um espaço), já que uma string vazia faria com que o SIGINT fosse ignorado pelo sub-processo tail
, assim como pelo shell de chamada. / p>
trap : INT # set a signal handler for SIGINT that does nothing
tail -f file.log
do_more_stuff # executed when tail is killed, e.g. by the user pressing Ctrl+C
trap - INT # reset SIGINT to killing the script