2017-03-31 7 views
1

コマンド:レベル2でサブシェルを強制する方法をpgidにするには?サブシェルのサブシェルとサブシェルの印刷物のPID以下

$ ((echo $BASHPID)& echo $BASHPID)& sleep 1 
[1] 9885 
9885 
9887 
[1]+ Done     ((echo $BASHPID) & echo $BASHPID) 

今すぐ以下のコマンドは、より複雑ですが、それは二サブシェルが、最初のサブシェルの「プロセスグループ」であることを示しています

$ ((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 

2番目の列の最後の行に固有の番号を表示する同様のコマンドを作成する簡単な方法はありますか?

答えて

0

&演算子を使用して現在のプロセス(PGID)からサブシェルを切り離しているため、別のプロセス(新しいPGID)で実行されるので、これを行う方法はありません。また

チェックこのもの:How to set process group of a shell script

+0

が、なぜ最初のサブシェルPGIDと第二サブシェルを所有している - んでありませんか? (そして、fistサブシェルPGIDに属します)。言い換えれば、最初のシェルからもう一度切り離したいPGID – noonex

+0

あなたのサブシェルはネストされています。外側のPPIDはbashコンソール自体であり、そのPGIDは分離されて以来独自のPGIDです。私はまだ内側のサブシェルが独自のPGIDを持たない理由を疑問に思っています。 –

+0

私はあなたの質問に答えなかったことを知っています:p –

関連する問題