シェルで二重起動防止
以下では、cronから実行すると常に二重起動と判定されてしまう。
OLDEST=$(pgrep -fo $0) if [ $$ != $OLDEST ]; then echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。" exit fi
そのため、以下のようにする。
OLDEST=$(pgrep -fo $0) if [ $$ != $OLDEST ] && [ $PPID != $OLDEST ]; then echo "[ERROR] 二重起動を検知したため、$0 の実行を中止します。" exit fi
理由は以下を参照。