第1四半期: 最近、リモートマシンのアクティブプロセスを監視するために、一部のジョブスクリプトが machine-01 にデプロイされました。この機能は、次のcmdを定期的に実行することによって実行されます。
ssh $ip "ps aux | grep $pattern " | grep -v 'grep' | wc -l
期待どおりに動作しますが、時には間違っていることもあります。これは、上記のcmdの結果が「null」であることを意味します。さて、次のcmdで結果を確認してください。
if [ "$nums" -lt 1 ]
第2四半期:また、このジョブスクリプトは他のサブスクリプトを実行するためのバックグラウンドサブプロセスを生成し、設計番号は60です。期待どおりに作成されたことを確認するために 'ps aux | grep xxx 'を実行すると、同じCMDに対して異なるPIDを持つ数行が見つかります。これを「ゴーストpid」といいます。これらの「ゴーストpid」がこれらのバックグラウンドサブプロセスによって生成されたサブサブプロセスである場合、同じCMDを持つのはなぜですか?
この2つの事実は、私がおそらく' ps aux | grep xxx'がよくわからないことを示唆しています。誰かが私にいくつか説明することができますか?
=============================
ps aux | grep xxxをpgrepに変更した後。 「ゴースト pid」がまだ発生します。 Q1を再確認してハッキングしました。しかし、まだQ2を修正することはできません。図-1は私の起動サブプロセスログです。図 2 は、サブプロセスの期間をpgrepしたときの結果です。