謎のプロセスを捉える最善の戦略は何でしょうか?

謎のプロセスを捉える最善の戦略は何でしょうか?

私のサーバーには、毎晩深夜に強制終了される実行中のプロセスがあります。これは職場で発生しており、発生時には私はその場にいませんし、リモート アクセスもできません。

殺害は毎晩 23:59 に確実に発生します。次の日に到着すると、次のようになります。

  • プロセスは23:59までです
  • プロセスのログには、最終変更時刻が 23:59 と表示されます (新しい日付のログは直後に開始されます)。

殺害は同じ時間に起きるので、バッチジョブを強く疑いました。crontabすべてのマシンの を調べましたが、何も見つかりませんでした。明らかに何かが足りないようです。

出力をps断続的に報告し、数分前に起動してatしばらくループする監視スクリプトを作成したいと考えています。このアイデアは弱く、エラーが発生しやすいように思われるので、もっと良いアイデアを持っている人はいないかと思っています。

詳細:

  • 宇宙は非常に大きく、非常に古いレガシー システムです。私のチームでは誰もそのようなプロセスを認識していないようです (もし認識している人がいたら、その人は私たちのチームにいます)。大規模な組織は何千人もの従業員で構成されており、理論的にはその多くがこれにアクセスできるはずです (なぜアクセスできるのかわかりません)。言い換えると、セキュリティはそれほど厳重ではありません。

  • 環境は、Solaris 10 を実行する複数のマシンで構成されています。

  • これは実稼働環境ではないため、タイムアウトやダウンタイムは重要ではありません。

  • タイミングの正確さを考えると可能性は低いですが、強制終了がバッチ ジョブによるものではない可能性も排除しません。

  • 明らかに、私たちの簿記には欠陥があるので、想像できることはすべて可能です。

私の質問は、採用すべき最善の戦略は何かということです。これは、「レガシー システムで作業する喜び」という大きな傘の下にあります。私はスクリプトの作成を開始しており、フィードバックを得るためにまもなくここに投稿する予定です。それまでの間、もっと良いアイデアをお持ちの方がいらっしゃいましたら、ぜひ教えてください。

答え1

ログを定期的にローテーションするのは一般的であり、深夜にローテーションするのが一般的です。多くのアプリケーションはこれを自動的に実行します。

そうでない場合は、logrotateローテーションを実行するようなツールがあります。多くのプログラムは、HUP 信号が送信されたときにログを再度開くように設定されており、これは で使用される手法の 1 つですlogrotate

確認事項:

  • すべての PID が変更されますか。変更されていない場合は、プログラムが独自のログをローテーションしているか、ログのローテーションに適切に応答している可能性があります。
  • PID を変更するプログラムは、深夜に再起動されましたか? そうでない場合は、親プログラムをチェックして、何が行われるかを確認します。
  • 一日の終わりにどのプロセスが実行されているかを確認するには、root の crontab をチェックします。
  • プロセス ユーザー ID の crontab をチェックして、1 日の終わりにどのプロセスが実行されているかを確認します。
  • ログ ファイルが直接書き込まれているのか、それともログをローテーションするログ ライターによって書き込まれているのかを確認します。

関連情報