下面的命令打印子shell的pid和子shell的子shell:
$ ( ( echo $BASHPID )& echo $BASHPID )& sleep 1
[1] 9885
9885
9887
[1]+ Done ( ( echo $BASHPID ) & echo $BASHPID )
现在,下面的命令更复杂,但它表明第二个子shell位于'进程组'第一个子shell:
$ ( ( echo $$ $BASH_SUBSHELL $BASHPID ; export BBB=$BASHPID; ps -e -o pid,pgid,ppid,comm | grep -E "$$|$BBB|PGID" | grep -E "bash|PGID" )& echo $$ $BASH_SUBSHELL $BASHPID; sleep 1 )& sleep 1
[3] 9973
2787 1 9973
2787 2 9975
PID PGID PPID COMMAND
2787 2787 2769 bash
9973 9973 2787 bash
9975 9973 9973 bash
是否有简单的方法来创建类似的命令,该命令将显示第二列中最后一行的唯一编号?
答案 0 :(得分:0)
没有办法这样做,因为你正在从当前进程(PGID)中拆除子弹并使用&因此,运算符将在单独的进程(新PGID)上运行。