分析自启动以来程序/命令的频率(命令与 PID 直方图)

分析自启动以来程序/命令的频率(命令与 PID 直方图)

我想看看自上次重新启动以来,在我的系统中哪个程序获得 PID 的频率最高,其次是频率。如果我top现在运行,我可以看到PID列和COMMAND列,但只能看到当前的系统状态。我想从一些日志中挖掘或启用一些日志,因此每当某些东西有了新的东西时PIDCOMMAND我想向表中添加一行,并分析该表。例如:

      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

您可以看到有几个PIDs 已经退出(如 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

相关内容