スクリプト名をキーにプロセス数をカウントして場合わけすればよいと思ったのだけれども…
サンプル:single_process.sh
#! /bin/bash COUNT=`ps -ef | grep $0 | grep -v grep | wc -l` echo "process count: $COUNT" if [ $COUNT -gt 1 ]; then echo "process already exists" exit fi echo "in progress ..." sleep 10 echo "down."
サンプルの実行結果
$ ./single_process.sh process count: 2 process already exists
となってしまう。
つまり、ひとつしかスクリプトを実行していないにも関わらず、2個とカウントされてしまうのである……いったい、なぜ?
【追記】って、あ、そうか…
COUNT=`ps -ef | grep $0 | grep -v grep | wc -l`
ここで(``を使って)子プロセス作成しているから、そりゃひとつ増えるわな(恥)。