追加のツールを必要としないソリューションが推奨されます。
ベストアンサー1
nsgの答えとほぼ同じです。ロックを使用してください。目次。ディレクトリの作成は、linux、unix、* BSD、その他多くのオペレーティングシステムでアトミックに行われます。
if mkdir -- "$LOCKDIR"
then
# Do important, exclusive stuff
if rmdir -- "$LOCKDIR"
then
echo "Victory is mine"
else
echo "Could not remove lock dir" >&2
fi
else
# Handle error condition
...
fi
デバッグ目的でロックshのPIDをロックディレクトリ内のファイルに入れることができますが、PIDをチェックしてロックプロセスがまだ実行中であることを確認できると考えるトラップに陥らないでください。そのプロセスには多くの競争条件があります。