スクリプトが実行された回数を求めようとしますが、一度だけ実行しても常に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
2行を追加しますps
。私たちはこの番号です2、n-2
正しい数字を得るには減算するだけです。