シェルで作成されたプロセスがあります。バックグラウンドプロセスとして実行され、データベースを.csvファイルにエクスポートします/tmp
。
バックグラウンドプロセスが完了(終了/終了)されているのか、CSVファイルのロックが閉じられているのか、どうすればわかりますか?ファイルの作成後に別のホストにFTPを送信する予定ですが、ファイル転送を開始する前にファイル全体が必要です。
ベストアンサー1
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