fromスクリプトを実行するときは、「ps -ef」コマンドを実行して直接実行します。

fromスクリプトを実行するときは、「ps -ef」コマンドを実行して直接実行します。

このコマンドを単独で実行すると、3 が表示されます。これは実際には正しいです。

ps -ef | grep kafka | grep -v grep | wc -l

ただし、スクリプトを入力すると結果5が表示されます。

[mradmin@orionkafka-dt-t1 scripts]$ ./kafkamonitoring.sh
5

スクリプトは

if [[ $( ps -ef | grep kafka | grep -v grep | wc -l) -lt 3 ]]
then
echo $(ps -ef | grep kafka | grep -v grep | wc -l)
mail -s 'Kafka down on trn environment' [email protected] <<END
Hi Support Team,

Kafka is down on trn server $(hostname) .Please take immediate action

Regards,
Application Support Team
END
fi

ベストアンサー1

スクリプト名はkafkamonitoring.sh文字列を含むですkafka。スクリプト名がps出力に表示されます。これは追加の一致の1つを説明します。

コマンド置換でこのコマンドを実行すると、psスクリプト名の他のインスタンスがps出力に表示されます。だから別の追加ゲームがあります。

pkill前の質問に対する回答で述べた内容を使用すると、より良いサービスを受けることができますpgrep(ここでは多くの資料を統合しました)。シェルスクリプトで実行されているプロセスを検出できません。 たとえば、プロセスが正しく呼び出されると、コマンドは正しく一致しますkafkapgrep -x kafkaを使用して特定のユーザーを指定することもできます-u

おすすめ記事