Я пишу script (show_volume.sh), который можно вызвать несколько раз за короткие промежутки времени. Мне нужен способ определить, есть ли только один запущенный экземпляр этого script. Я решил, что могу использовать 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
и начал этот script один раз, но вывод echo $PCOUNT
не имеет для меня никакого смысла. Я всегда получаю значение 2, а не 1, как и ожидалось. Когда я запускаю эту команду
ps -a | grep show_volume.sh | wc -l
с другого терминала, пока выполняется script, я получаю значение 1. Это почти так же, когда я запускаю этот script несколько раз подряд, например. 10 раз, используя цикл for. Сам script определяет слишком высокие значения, пока я получаю правильные значения при использовании другого терминала.
Теперь, почему этот script определяет эти нечетные значения?