シェルスクリプトで多重起動防止
2020/09/13

シェルスクリプトでロック機能つけたくて調べてたら、procmail入れたらついてくるlockfileと言うコマンドが神だった。 指定した秒数待って指定した回数リトライして待ってもダメならエラー返す。 指定した秒数より古いロックは無視する。 まで面倒見てくれる
SCRIPT_DIR=$(cd $(dirname $0); pwd) LOCKFILE=$SCRIPT_DIR/lock.file lockfile -2 -r 5 -l 120 $LOCKFILE if [ $? -ne 0 ]; then echo "lock failed" exit 1 fi # シェルスクリプトのメイン処理 rm -f $LOCKFILE |
lockfile -2 -r 5 -l 120 $LOCKFILE なら、2秒毎に5回リトライし、120秒ロックを取得できなければエラーを返すという指定です。