Finding number of child processes

bash, pid, process

Solution

To obtain the PID of the bash script you can use variable `$$`.

Then, to obtain its children, you can run:

bash_pid=$$
children=`ps -eo ppid | grep -w $bash_pid`

`ps` will return the list of parent PIDs. Then `grep` filters all the processes not related to the bash script's children. In order to get the number of children you can do:

num_children=`echo $children | wc -w`

Actually the number you will get will be off by 1, since `ps` will be a child of the bash script too. If you do not want to count the execution of `ps` as a child, then you can just fix that with:

let num_children=num_children-1

UPDATE: In order to avoid calling `grep`, the following syntax might be used (if supported by the installed version of `ps`):

num_children=`ps --no-headers -o pid --ppid=$$ | wc -w`

Problem

How do find the number of child processes of a bash script, from within the script itself?

Original source