BLOGTIMES
2010/11/28

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

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

ある人と排他制御の話をしていて、「スクリプトを Ctrl + C なんかで途中で止めたりするとロックファイルが削除されなくて、それをいちいち消すのが面倒ですよね」「マシン落ちたりしない前提ならば、trap使えば大丈夫でしょ」という話になったので、以前、書いたbashで簡単な多重起動防止スクリプトをmkdirを使ったバージョンに書き直してみました。

#!/bin/bash BASENAME=`basename $0 .sh` SCRIPT_DIR=`dirname $0` LOCK_DIR="LOCK_${BASENAME}" cd "$SCRIPT_DIR" mkdir "$LOCK_DIR" >/dev/null 2>&1 if [ $? -ne 0 ] ; then echo "[ERROR] Lock failed." exit 1 fi trap 'rmdir "$LOCK_DIR"' EXIT # ここに処理を書く sleep 10

確かに trap 使えば Ctrl + C でプログラムを止めてもちゃんとロックディレクトリが削除されますね。
意外とシェルスクリプトちゃんと使いこなせていことを実感しました。


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

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

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

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