短い間隔で数回呼び出される可能性のあるスクリプト(show_volume.sh)を作成しています。このスクリプトの実行中のインスタンスが複数あるかどうかを判断する方法が必要です。使用できると思っps
たので、この関数をBashで作成しました。
is_only_process(){
PCOUNT=`ps -a | grep show_volume.sh | wc -l`
echo $PCOUNT
if (( PCOUNT==1 )); then
return 1
fi
return 0
}
だから私はこれらの2行を追加しました
is_only_process
sleep 4
このスクリプトを一度開始しましたが、の出力はecho $PCOUNT
私には意味がありません。予想どおり、常に1ではなく2の値を取得します。このコマンドを実行すると
ps -a | grep show_volume.sh | wc -l
スクリプトの実行中に別の端末から値1を受け取ります。これは、このスクリプトを連続して数回実行した場合、たとえばforループを使用して10回実行した場合とほぼ同じです。別の端末を使用しているときに正しい値を受け取っている間、スクリプト自体が高すぎる値を判別します。
では、なぜこのスクリプトがこれらの奇数値を決定するのでしょうか。