如何找到脚本产生的子进程总数(递归)?
出于概要分析的目的,有时计算命令,脚本等的子过程有时很重要。
我尝试了什么?
ps
基于解决方案的解决方案-但它仅介绍了当前正在运行的流程。例子:
ps | awk '/ ps$/{print $1}'
27159
$ for a in {1..100} ; do date > /dev/null; done ## 100 processes
$ ps | awk '/ ps$/{print $1-2}'
27259
(27259-27159 = 100) ,但在接下来的PID号是reseted和患有其他任务的干扰。
> strace -c -f -e trace=fork,vfork,clone,execve,execl bash -c 'ls -ld /etc;sleep 1'
Process 15683 attached
drwxr-xr-x 1 root root 5540 10. Jan 02:08 /etc
Process 15684 attached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
0.00 0.000000 0 2 clone
0.00 0.000000 0 3 execve
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 5 total
> strace -c -f -e trace=fork,clone,execve bash -c '(foo=bar;ls -ld /etc);sleep 1'
Process 15730 attached
Process 15731 attached
drwxr-xr-x 1 root root 5540 10. Jan 02:08 /etc
Process 15732 attached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
0.00 0.000000 0 3 clone
0.00 0.000000 0 3 execve
------ ----------- ----------- --------- --------- ----------------
100.00 0.000000 6 total
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句