複数のBashシェルスクリプトを並行して実行したい。ただし、競合状態は避けたいです。 Unixコマンドとは本当に この目的で使用できるアトミックと、それらをどのように使用できますか?
承認された回答:
lockfile
の場合 システムにインストールされていない場合は、mkdir
作業を行います。これは不可分操作であり、ディレクトリがすでに存在する場合は失敗します
(-p
を追加しない限り) コマンドライン
スイッチ)。
create_lock_or_wait () {
path="$1"
wait_time="${2:-10}"
while true; do
if mkdir "${path}.lock.d"; then
break;
fi
sleep $wait_time
done
}
remove_lock () {
path="$1"
rmdir "${path}.lock.d"
}