我试图找到脚本的运行次数,但它总是 2,即使只运行一次。
sh 11.sh
1
11.sh already running,exiting..
这是代码。
ps -ef | grep -v grep | grep -c "$0"
if [[ `ps -ef | grep -v grep | grep -c "$0"` -gt "1" ]]; then
`echo " $0 already running,exiting.."`
fi
答案1
使用 pgrep ...
#!/bin/bash
PNAME=$(basename "$0")
COUNT=$(pgrep -c -x $PNAME)
(( COUNT > 1 )) && echo "$0 already running, exiting..."
答案2
仅考虑单个实例11.sh运行,并鉴于此11.sh:
n=`ps -ef | grep -wc "$0"` n=$((n-2))
echo $n
[ $n -gt "1" ] && echo " $0 already running,exiting.."
运行sh 11.sh
输出:
1
反引号和grep
添加另外两ps
行。因为我们知道这个数字是2,只需减去n-2
即可得到正确的数字。