シェルスクリプトを多重起動しないようにする
最初はこう書いていた。
lockfile build.lock ... rm -f build.lock
だけど、lockfileは失敗した時にデフォルトでは無限にリトライをする。ちょっと出来心で$ for i in {1..100}; do ./foo.sh; done;したから100人の待ち行列が出来てしまった。
やりたかったことは「既に起動していたら続行しないで終了」だったので-r 0でリトライ回数を0にした。
lockfile -r 0 build.lock || exit 1 ... rm -f build.lock