Eu acabei de tentar e ver qual é o principal problema aqui.
Se eu fizer um tail -f
em um arquivo existente e, em seguida, remover o arquivo, tail
não notará isso. A reson é simples: tail -f
abre um identificador de arquivo somente leitura que referencia o conteúdo do arquivo. Agora, se o arquivo desaparecer, apenas a entrada do meta-diretório desaparecerá. A alocação será liberada, quando o último FH for fechado - o que é tail
neste caso.
Então você precisa
- coloque
tail -f
em um processo em segundo plano próprio, lembre-se de seu PID. - Iniciar outro processo que monitora a existência do arquivo (em um loop while a cada segundo ou algo parecido)
- Se esse monitor perceber que o arquivo foi removido, ele deverá sinalizar o PID do processo final correspondente - com um sinal de sua escolha - você pode usar
trap
no processo final.