タグ

ブックマーク / memo-off.blogspot.com (1)

  • cronから起動されたスクリプトの多重起動チェック

    多重起動チェックについてググってみると次のような例が多く見つかりました [[ $$ != `pgrep -fo "$0"` ]] echo "$0 is already running" && exit 2 これは、自身と同じプロセス名を検索して、 そのもっとも古いプロセスIDが自身のプロセスIDと一致していればおーけー という処理になります。 ただ、これは直接スクリプトを実行した場合にのみ有効で cronなどから子プロセスそしてスクリプトを実行した場合は $$は子プロセスとして起動されたスクリプトのプロセスID pgrep -fo "$0"で引っかかってくるのが起動元の親プロセスのIDとなり 一致しないので、多重起動として扱われてしまいました(´・ω・`) これに対応するため、親プロセスIDが格納される$PPIDとの比較も追加して次のようにしてみました [[ $$ != `pgrep -

  • 1