Home

技術系のメモと日々の雑感

シェルスクリプトの多重起動を防ぐ簡単な方法

cron で 1 分ごとに実行するスクリプトがあって、処理に時間がかかると同時に走ってしまって変になることがあった。
こういう場合、処理中はフラグ代わりのファイルを作っておいて、終わったら消すのが一般的なのかな。
自分もしばらくこれでやってたんだけど、もうちょっといい方法がないか考えてみた。
で、思いついたのが

pgrep -f `basename $0` | wc -l > /tmp/.script.check
if [ `cat /tmp/.script.check` -ne 1 ]; then
  exit
fi

という処理をシェルスクリプトの先頭に書いておく方法。
バッククオートがネストできればもう少しきれいに書けるんだけどなぁ。
単純に ps の結果を grep すればいいんじゃないかなんて思ってしまうけど、やってみると意外と難しいね。

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2012/07/04(水) 01:28:27

-

管理人の承認後に表示されます

  • From: |
  • 2011/10/25(火) 23:38:42

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する