- blogs:
- cles::blog
2012/03/19

bashで多重起動を防止する(その3)



これまで何度も話題にしてきたシェルスクリプトの多重起動を防止ルーチン*1ですが、 procmail についている lockfile というコマンドを使うとより楽に実装できそうということが分かったので書き直してみました。
こんなストレートなコマンドが存在していたとは盲点でした。
LOCKFILE(1) LOCKFILE(1)
NAME
lockfile - conditional semaphore-file creator
SYNOPSIS
lockfile -sleeptime | -r retries |
-l locktimeout | -s suspend | -! | -ml | -mu | filename ...
こちらはリトライ回数、リトライ間隔、ロックのタイムアウトが指定できるので、もし何らかの理由でロックファイルが残ってしまってもタイムアウト時間を経過していれば強制的にロックファイルが削除されます。
synchronized.sh
#!/bin/bash
BASENAME=`basename $0 .sh`
SCRIPT_DIR=`dirname $0`
LOCK_FILE="LOCK_${BASENAME}"
MAX_RETRY=3
RETRY_INTERVAL=5
LOCK_TIMEOUT=180
cd "$SCRIPT_DIR"
lockfile -$RETRY_INTERVAL -r $MAX_RETRY -l $LOCK_TIMEOUT $LOCK_FILE >/dev/null 2>&1
if [ $? -ne 0 ] ; then
echo "[ERROR] Lock failed."
exit 1
fi
trap 'rm -f "$LOCK_FILE"' EXIT
# ここに処理を書く
sleep 10
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4839
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112043)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110672)
3 . 年次の人間ドックへ(110298)
4 . 2023 年分の確定申告完了!(1つめ)(109842)
5 . 三菱鉛筆がラミーを買収(109744)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110672)
3 . 年次の人間ドックへ(110298)
4 . 2023 年分の確定申告完了!(1つめ)(109842)
5 . 三菱鉛筆がラミーを買収(109744)
cles::blogについて
Referrers