BLOGTIMES
2009/03/17

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

  cli  sh 
このエントリーをはてなブックマークに追加

シェルスクリプトで多重起動防止処理が必要になったのでちょっと書いてみました。

#!/bin/bash BASENAME=`basename $0 .sh` PID_FILE="$BASENAME.pid" if [ -f $PID_FILE ]; then STORED_PID=`cat $PID_FILE` if (ps -p ${STORED_PID} -o pid= >/dev/null); then echo "Locked by PID($STORED_PID)" exit fi fi echo $$ > $PID_FILE # ここに処理を書く sleep 10 rm $PID_FILE

判定部分がAtomicじゃないので厳密な意味で排他制御はできていないのですが、今回はそこまで厳密でなくても問題ないのでこれでよしとしました。
厳密にやるにはmkdirとか使ってやるほうがいいんでしょうけど。。。。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2968
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン