我正在编写一个脚本(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
}
所以我添加了这两行
is_only_process
sleep 4
并启动了这个脚本一次,但输出echo $PCOUNT
对我来说没有任何意义。正如预期的那样,我总是得到值 2,而不是 1。当我运行这个命令
ps -a | grep show_volume.sh | wc -l
在脚本运行时从另一个终端收到值 1。当我连续多次运行此脚本时几乎相同,例如使用 for 循环运行 10 次。当我在使用另一个终端时收到正确的值时,脚本本身会确定过高的值。
现在,为什么这个脚本会确定这些奇数值?