シェルスクリプトで多重起動防止

シェルスクリプトでロック機能つけたくて調べてたら、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秒ロックを取得できなければエラーを返すという指定です。

参考

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.