如何在身份验证日志中追踪进程

如何在身份验证日志中追踪进程

我有一台运行 ubuntu 14.04 的服务器。在 /var/log/auth.log 中,有某种每小时运行一次的自动化进程,我想找出该进程是什么。

我已经确定没有任何用户安排 cron 作业。我所需要做的就是每小时检查 auth.log 中的以下示例行:

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/*

如果似乎没有,您可以附加strace到 cron 进程来查看它读取了哪些文件,或者执行了哪些命令:

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 后的列是用括号括起来的进程名称(以 开头()。

相关内容