如何在流程生命周期中监控流程状态

时间:2014-11-23 00:38:53

标签: linux unix pid ps

我需要在可执行生命周期内跟踪进程状态ps axf。 假设我有可执行文件main.exec,并希望在main.exec执行期间调用所有子进程存储到文件中。

 $ main.exec &
 $ echo $! # and redirect every ps change for PID $! in a file.

2 个答案:

答案 0 :(得分:2)

strace - 跟踪系统调用和信号

$ main.exec &
$ strace -f -p $! -o child.txt

-f  Trace  child  processes  as  they  are  created  by currently traced processes as a result of the fork(2), vfork(2) and clone(2) system calls. Note that -p PID -f will attach all threads of process PID if it is multi-threaded, not only thread with thread_id = PID.

答案 1 :(得分:1)

如果您无法重新编译并检测main.exec,则循环中的ps是一个可能对您有用的简单选项:

while true; do ps --ppid=<pid> --pid=<pid> -o pid,ppid,%cpu,... >> mytrace.txt; sleep 0.2; done

然后相应地解析输出。

top也可以运行,并且可以在批处理模式下运行,但不确定是否可以让它动态监控子进程,如ps。别这么认为。