スクリプト実行回数[繰り返し]

スクリプト実行回数[繰り返し]

スクリプトが実行された回数を求めようとしますが、一度だけ実行しても常に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

バックティックを追加し、grep2行を追加しますps。私たちはこの番号です2n-2正しい数字を得るには減算するだけです。

関連情報