[英]how to force subshell on level 2 be in own pgid?
下面的命令打印子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
有没有简单的方法来创建类似的命令,它将显示第二列中最后一行的唯一编号?
由于您使用&运算符从当前进程(PGID)分离子shell,因此将无法执行此操作,因此将在单独的进程(新PGID)上运行。
另请检查以下内容: 如何设置shell脚本的进程组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.