监视 Linux 机器上所有新生成的进程

监视 Linux 机器上所有新生成的进程

有时进程的启动和结束速度比我能做到的要快ps aux,我试过了watch -d -n0.1 "ps aux | tail",但还是被限制在 1/10 秒。我真正想要的是运行一个命令并跟踪所有新进程,每行一个,因为它们会产生。即使是运行速度很快的进程。我知道strace有类似的功能,但我无法让它做我想做的事。

tl;dr:有没有办法记录所有新进程?

我不想知道太多,一行代码就够了ps aux,就目前的情况来说,我只有一个进程,它由另一个进程产生,然后消失了,我想能够运行它,但我不知道命令是什么。即使知道新的 PID 也足够了,因为我可以想出一个脚本,它可以获取这些 PID 并在ps | grep这些 PID 上运行,并在进程运行时给我更多信息(假设进程在ps运行时仍然存在)

答案1

您想了解这些进程的哪些信息?如果您可以控制谁生成这些进程,strace -feprocess $SHELL那就可以了。

如果只是对其足迹的概述,请使用进程记帐(在 gnu acct 包中;使用 lastcomm 命令),或更高级的工具,如 atop 的记录器模式。将来,像痕迹并且 uprobes 将有助于从内核中获取详细信息。

答案2

答案3

史努比可能是适合您用例的工具。

如果您需要简单的记录器并且您不需要安全/审计解决方案,那么 Snoopy 可能就是它了。

披露:史努比维护者在此。

答案4

您应该使用lastcomm,但由于我的内核不是使用进程记账构建的,我唯一的选择是top找到一个永久唤醒我的 USB HDD 的进程。最后我找到了这个命令:

top -b -c -d 5 > /tmp/top.log

top每 5 秒执行一次 ( -d 5),包含所有进程的完整列表 ( -b) 和完整命令 ( -c),并将其写入文件 /tmp/top.log ( >)。

看到磁盘旋转后,我停止了记录,检查了当前时间范围内的所有输出,最后找到罪魁祸首

top允许-d 0,其中“导致(几乎)持续更新“,但连续写入日志文件会产生巨大的负载,因此请注意。

如果您不想写入驱动器,您可以使用tmpfs创建一个 ramdisk,这样日志文件就会写入 RAM。

相关内容