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

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

参考

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください