스크립트가 실행된 횟수를 구하려고 하는데, 한 번만 실행해도 항상 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
올바른 숫자를 얻으려면 빼기만 하면 됩니다.