から派生するすべてのプロセス(子、孫など)のリストを取得したいと思い$pid
ます。これは私が思いついた最も簡単な方法です:
pstree -p $pid | tr "\n" " " |sed "s/[^0-9]/ /g" |sed "s/\s\s*/ /g"
すべての子孫プロセスの完全なリストを取得するためのコマンド、またはより簡単な方法はありますか?
'\n'
区切り文字と' '
区切り文字の両方を気にしません)。実際の使用例は次のとおりです。a )純粋なマゾヒズムから書き出したデーモン化スクリプト(具体的には、「停止」機能は、デーモン化されたプロセスが生成したプロセスのツリーを処理する必要があります)。およびb)タイムアウトしたプロセスが作成したものをすべて強制終了するタイムアウトスクリプト。
kill
。参照unix.stackexchange.com/questions/9480/...、unix.stackexchange.com/questions/50555/...
ps ax -opid,ppid,pgrp,cmd
と、強制終了しpgrp
たいサブツリーと同じものを共有する多くのプロセスがあることがわかります。(さらに、setpgrp
プログラムはdebian安定版パッケージのどこにもリストされていません:packages.debian.org/…)