Bash

Bashで二重起動防止

More than 5 years have 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