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

I need to trace all child processes created by given process in Linux (or POSIX system)

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

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

在 Windows 中,我可以使用 ProcessMonitor(它挂钩 CreateProcess 等系统调用)之类的工具收集这些数据。 我想 Linux?

中也存在类似的机制

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

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

  • Python script to monitor process and sub-processes

恕我直言,在某个时刻获取各种进程信息的最简单方法是从/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