Bashで二重起動防止

  • 29
    Like
  • 3
    Comment
More than 1 year has passed since last update.

いちいち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