認証ログでプロセスを追跡する方法

認証ログでプロセスを追跡する方法

Ubuntu 14.04 を実行しているサーバーがあります。/var/log/auth.log には、1 時間ごとに実行される何らかの自動プロセスがあり、そのプロセスが何であるかを知りたいです。

どのユーザーによっても cron ジョブがスケジュールされていないことは既に判明しています。私が確認する必要があるのは、auth.log の次のサンプル行を 1 時間ごとに確認することだけです。

Dec  2 03:17:01 fi CRON[23537]: pam_unix(cron:session): session opened for user root by (uid=0)
Dec  2 03:17:01 fi CRON[23537]: pam_unix(cron:session): session closed for user root
Dec  2 04:17:01 fi CRON[23557]: pam_unix(cron:session): session opened for user root by (uid=0)

これを追跡する方法について何かアイデアはありますか?

答え1

どのユーザーによっても cron ジョブがスケジュールされていないことが既に判明しました。

/etc/crontabおそらく、およびのシステム全体の cron ジョブを見逃したのでしょう/etc/cron.d/*

何もない場合は、stracecron プロセスにアタッチして、読み取られるファイルや実行されるコマンドを確認できます。

strace -p 23537 -e file
strace -p 23537 -f -e execve [-s 10000]

古いシステムでは、cron が自動リロードのサポートなしでコンパイルされていた可能性があります。そのため、誰かが /etc/crontab からジョブを手動で削除したが cron をリロードしなかった場合、誰かがリロードをトリガーするまでジョブは実行され続けます。

答え2

使用できますatop

インストールされると、プロセスとそのリソース使用量が自動的に記録され、データがログ ファイルに書き込まれます。十分なデータが収集されるまで少し待ってから、ログを検査したり解析したりすることができます。

たとえば、ログを収集した後、どのプロセスが実行されていたかを確認するには、次のコマンドをお勧めします。

atop -r /var/log/atop/atop_<current date> -b 03:16 -e 03:18 -P PRG | grep -P 'PRG.*\s23557\s\('

この意志:

  1. 当日の03:16から03:18までのログファイルを読み取ります。
  2. プロセスに関する一般的なデータ(プロセス名を含む)を含む、機械が解析可能な出力でデータを出力します。
  3. PID 23557 のプロセスが記録されている行を検索すると、括弧で囲まれたプロセス名を確認できます。grep パターンは精度を高めるためのもので、行は常に で始まりPRG、値の列はスペースで区切られ (PID は別の列)、PID の後の列は括弧で囲まれたプロセス名 ( で始まる() になります。

関連情報