No Linux, o arquivo não está bloqueado, mesmo quando um programa está gravando nele (ao contrário do Windows).
Para verificar se o processo está concluído, use:
while [[ 1 ]]; do
pgrep dbprocess &>/dev/null
if [[ $? -eq 0 ]]; then
echo still running
else
echo finished
# start ftp transfer
fi
sleep 2
done
Para verificar se o processo tem o arquivo aberto, você pode usar
-
lsof <file>
listará os processos que abriram<file>
-
ls -l /proc/$(pgrep db-process)/fd
lista os descritores de arquivos abertos pelo processodb-process