Eu tenho algum serviço que produz logs no arquivo logs.log
.
Eu tenho algum outro comando que interage com este serviço. Digamos que seja algum foo.sh
.
O que eu preciso é cortar e salvar logs logs.log
exatamente durante foo.sh
a execução. Em outras palavras, preciso dessa parte dos logs do serviço quando ele interage com o meu foo.sh
(portanto, não me importo com foo.sh
os logs do ).
Eu esperaria que este comando fizesse o truque, mas continua lendo o arquivo quando foo.sh
já terminou:
> foo.sh | tail -f logs.log > foo_part.log
Existe alguma maneira legal de executar esse truque?
Isso é feito de maneira bastante direta, enviando seus processos em segundo plano para, bem, em segundo plano:
$!
captura o PID do último job enviado para rodar em segundo plano, assim podemoswait
no seu script finalizar, e depoiskill
otail
processo quando não precisarmos mais dele.Esta versão também pode fazer isso (eu acho):
Repare que % 1 atingirá o primeiro processo em segundo plano no subshell