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