shを使用して実行するとスクリプトが正常に機能しません。 cronjobであっても問題なく実行できました。/bin/shを使用しているときにスクリプトが正しく実行されない
/bin/sh process_check.sh
しかし、私は次のよう
./process_check.sh
スクリプト使用して実行したときに罰金実行するようだ
#/bin/sh
$service=xxx
if (($(/bin/ps -ef | grep $service | wc -l) > 1))
then
true
else
echo "$service is not running!!!"
/usr/sbin/xxx
fi
(それが動作していない場合は、プロセスが実行されている場合はチェックを、処理を実行します)
また、これをもっと効率的にする方法はありますか?私は常に実行していることを確認しようとしているコンパイルされたプログラムがあります。
'if(($(/ bin/ps -ef | grep $ service | wc -l)> 1));)の代わりに。 'もっと簡単に試してみてください:if/bin/ps -ef | grep -q $サービス;その後 ' –
@WilliamPursellそれに問題があります。 '$ service'が実行されていなくても、' grep -q $ service'プロセスが 'ps'出力に含まれるかもしれません。そのため、OPのコードは '> 1 '(2つ以上)を要求したのです。 '$ service'にマッチするプロセスです。 – John1024
Bourne Shell( 'sh')で実行しますが、Bourneで定義されていない'((.... ....) 'と' $(....) 'を使用しています。もちろん、システム上でshがbashにリンクされている場合、このエラーは明白ではありません。 – user1934428