回答:
Linuxでは、プログラムは(Windowsとは異なり)ファイルに書き込んでも、ファイルはロックされません。
プロセスが完了したかどうかを確認するには、次を使用します。
while [[ 1 ]]; do
pgrep dbprocess &>/dev/null
if [[ $? -eq 0 ]]; then
echo still running
else
echo finished
# start ftp transfer
fi
sleep 2
done
プロセスがファイルを開いているかどうかを確認するには、次を使用できます
lsof <file>
開いたプロセスを一覧表示します <file>
ls -l /proc/$(pgrep db-process)/fd
プロセスによって開かれているファイル記述子をリストします db-process
wait
これを実現するために組み込みのシェルを使用できます。
wait
組み込みは、単にシェルは完全にバックグラウンドジョブを待って一時停止する原因となります。待機する特定のジョブを渡すか、すべてのジョブを待機させることができます。
例えば:
echo $(date): starting
sleep 5 &
echo $(date): do something else
wait
echo $(date): background job finished
その結果:
Thu Sep 25 12:06:48 EDT 2014: starting
Thu Sep 25 12:06:48 EDT 2014: do something else
Thu Sep 25 12:06:53 EDT 2014: background job finished