Я пишу скрипт (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.Сам скрипт определяет значения, которые слишком высоки, в то время как я получаю правильные значения при использовании другого терминала.
Теперь, почему этот скрипт определяет эти нечетные значения?