如何从脚本本身中找到一个bash脚本的子进程数?
要获得bash脚本的PID,可以使用变量$$.
然后,要获得孩子,你可以运行:
bash_pid=$$ children=`ps -eo ppid | grep -w $bash_pid`
ps将返回父PID列表.然后grep过滤与bash脚本的子项无关的所有进程.为了得到你可以做的孩子的数量:
num_children=`echo $children | wc -w`
实际上,你将获得的数字将被关闭1,因为ps将是bash脚本的孩子.如果您不想将ps作为孩子的执行计数,那么您可以通过以下方式修复:
let num_children=num_children-1
更新:为了避免调用grep,可能会使用以下语法(如果ps的已安装版本支持):
num_children=`ps --no-headers -o pid --ppid=$$| wc -w`