Bashで二重起動防止

  • 29
    いいね
  • 3
    コメント
この記事は最終更新日から1年以上が経過しています。

いちいちlockファイル置いたりしてexitしたらゴミが残ったり、シビアなタイミングだとファイル作る前に2つ目が起動しちゃったりするのはナンセンス。

お手軽かつ比較的正確にやるなら、pgrepで既に同じシェルが起動していないか調べれば良い。

if [ $$ -ne $(pgrep -fo "$0") ]; then
  echo "既に起動されています"
  exit 1
fi

引数も含めて多重をチェックするなら、検索する文字列を少し工夫する。

_CMD="$0 $@"
if [ $$ -ne $(pgrep -fo "$_CMD") ]; then
  echo "既に起動されています"
  exit 1
fi