繁体   English   中英

如何在第2级强制子shell在自己的pgid?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM