起動後のプログラム/コマンド頻度分析(コマンド対PIDヒストグラム)

起動後のプログラム/コマンド頻度分析(コマンド対PIDヒストグラム)

私のシステムのどのプログラムが最後の再起動後に最も頻繁にPIDを取得し、どのくらいの頻度で受信されるかを確認したいと思います。今すぐ実行すると、列と列が表示されますが、top現在のシステム状態のみを表示できます。一部のログで採掘したり、一部のログを有効にしたいので、新しい内容があるたびにテーブルに行を追加してそのテーブルを分析したいと思います。たとえば、PIDCOMMANDPIDCOMMAND

      1 root      20   0  168424  10960   7820 S   0.0   0.1   0:02.78 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     10 root      20   0       0      0      0 S   0.0   0.0   0:02.26 ksoftirqd/0
     11 root      20   0       0      0      0 I   0.0   0.0   0:31.57 rcu_sched

PID複数のsが終了したことがわかります(例:5、7、8)。一度始めたら、すべて録音したいです。これを行うコマンドやユーティリティはありますか?

答え1

auditdこれは、Linuxカーネルに組み込まれている監査機能を使用する基本的なソリューションです。

auditctl -a always,task # the one below should also work; pick one
auditctl -a always,exit -F arch=b64 -S clone,fork,vfork,execve
systemctl restart auditd
# wait a while and use your computer

または、audit構成ファイルを作成してサービスを有効にして再起動します。

echo "-a always,task" > /etc/audit/rules.d/logpid.rules
echo "-a always,exit -F arch=b64 -S clone,fork,vfork,execve" > /etc/audit/rules.d/logpid.rules
systemctl enable auditd
systemctl start auditd
reboot

その後、再起動して一定期間使用して監査レポートを確認してください。

aureport --start today --interpret --executable --summary # sort by execs the number of audit events
aureport --start today --interpret --syscall --summary

関連情報