シェルスクリプトの多重起動を防止する方法

シェルスクリプトの多重起動を防止する方法

シェルスクリプトが複数同時に起動されないようにするには、ロックファイルを作成してスクリプトが実行中かどうか管理したりするなど様々な方法がありますが、ここではそのような方法ではなく、実行中のプロセスをチェックすることでシェルスクリプトの多重起動を防止する方法を見てみます。

#
# Prevent multiple script running.
#
PROCNAME=$(basename $0);
PROCID=$(pidof -x $PROCNAME)
if [ $(echo $PROCID | awk '{print NF}') -gt 1 ];
then
  # Process is already runnning.
  exit 0;
fi

上記コードをシェルスクリプトの先頭部分にコピー&ペーストするだけで多重起動を防止できるようになります。

この方法であれば、ロックファイルなどを作成する必要もなく、手軽に多重起動を防止できます。