Eu tenho um processo que foi gerado a partir de um shell. Está sendo executado como um processo em segundo plano e exportando um banco de dados para um arquivo CSV no Windows /tmp
.
Como posso saber quando o processo em segundo plano foi concluído (concluído / encerrado) ou se o bloqueio do arquivo CSV foi fechado? Pretendo enviar o arquivo por FTP para outro host, uma vez gravado, mas preciso do arquivo completo antes de iniciar a transferência.
Respostas:
No Linux, o arquivo não é bloqueado mesmo quando um programa está gravando nele (ao contrário do Windows).
Para verificar se o processo foi concluído, use:
Para verificar se o processo tem o arquivo aberto, você pode usar
lsof <file>
listará os processos que foram abertos<file>
ls -l /proc/$(pgrep db-process)/fd
lista os descritores de arquivo abertos pelo processodb-process
fonte
Você pode usar o
wait
shell interno para fazer isso.O
wait
builtin simplesmente faz com que o shell pause, aguardando a conclusão dos trabalhos em segundo plano. Você pode aprovar um trabalho específico para aguardar ou esperar todos os trabalhos.Por exemplo:
O que resulta em:
fonte