gpt4 book ai didi

linux - 我需要跟踪 Linux(或 POSIX 系统)中给定进程创建的所有子进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:06 25 4
gpt4 key购买 nike

我有创建许多子进程的进程。并且每个子进程都可能创建后续的子进程。如何获取所有已创建进程及其命令行参数的列表?我最好需要知道每个子进程的父进程。

所以我需要为每个进程获取 pid、ppid 和命令行。然后我可以分析这些数据。

在 Windows 中,我可以使用像 ProcessMonitor 这样的工具收集这些数据(它 Hook 像 CreateProcess 这样的系统调用)。我想在 Linux 中也存在类似的机制吧?

编辑:所以在Linux中有两种方式:

  • 使用 exec strace -s 9999 -f -e trace=execve -p [进程的 pid] >& strace.log。然后用一些简单的 perl 脚本解析它并生成一个子进程树。我最终使用了它。缺点是 strace 调试所有进程树。有些程序因此而失败。
  • 使用auditctl。它直接记录特定的系统调用,无需调试。类似于 Windows 中的Process Monitor 工具。我没试过。可能会解析日志以生成子进程树,类似于 strace。不过,解析起来会更加困难,因为需要过滤日志以仅包含来 self 们感兴趣的进程树的信息。

最佳答案

如果您的意思是在某个特定时刻获取该信息,这不是那么简单,您可能需要查看我对这些问题的回答以了解其他需要考虑的事项:

恕我直言,在特定时刻获取各种进程信息的最简单方法是从 /proc/<pid> 下的文件中获取。目录,参见 http://man7.org/linux/man-pages/man5/proc.5.html

如果您想要进程整个生命周期的(历史)信息 strace可能会捕获其中的一些(但它可能会影响性能,如果这对您有用,请不要这样做):https://superuser.com/questions/79869/will-strace-watch-system-calls-recursively-on-child-processes-of-the-main-proces

关于linux - 我需要跟踪 Linux(或 POSIX 系统)中给定进程创建的所有子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31298392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com