![명령에 의해 생성된 하위 프로세스의 총 수를 (재귀적으로) 계산합니다.](https://linux55.com/image/60485/%EB%AA%85%EB%A0%B9%EC%97%90%20%EC%9D%98%ED%95%B4%20%EC%83%9D%EC%84%B1%EB%90%9C%20%ED%95%98%EC%9C%84%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%B4%9D%20%EC%88%98%EB%A5%BC%20(%EC%9E%AC%EA%B7%80%EC%A0%81%EC%9C%BC%EB%A1%9C)%20%EA%B3%84%EC%82%B0%ED%95%A9%EB%8B%88%EB%8B%A4..png)
스크립트에 의해 생성된 하위 프로세스의 총 수를 (재귀적으로) 찾는 방법은 무엇입니까?
분석 목적을 위해 때로는 명령, 스크립트 등에 의해 생성된 하위 프로세스를 계산하는 것이 중요합니다.
나는 무엇을 시도했는가?
ps
솔루션을 기반으로 하지만 현재 실행 중인 프로세스만 표시됩니다.- 사용다음 pid 번호(이것이 나의 최선의 해결책이다)
예:
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 번호다른 일로 인해 재설정되고 주의가 산만해집니다.
답변1
> 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