要約:プロセスを生成するデーモンがあり、正常に停止する必要があります。オンラインで見つけたpgidベースのソリューション:
group_id=$(ps -o pgid= $(cat $pidfile))
if [ ! -z $group_id ]; then
kill -- -$group_id
success
fi
どのように動作するか知りたいです。私が最初に遭遇したのはgroup_idを取得することでした。私はここで何が起こっているのか理解していません。
$ ps -o pgid= 21814
21813
$ ps -o pgid=21814
21814
3525
5180
しかし、「=」の後にスペースがある最初の例は必須です。
$ pstree -p | grep 21814
|-python(21814)-+-python(21815)-+-{python}(21813)
何が起こっているのかを説明できる人はいますか?この例の結果は何ですか?
答え1
型フラグ(-o format
)の後にある等号は、出力として生成されたオプション列を指定するヘッダーの印刷を抑制します。これはnull(空)結果をテストします。
デフォルトでは、ps
ターミナルセッションの現在のユーザーと同じ有効ユーザーIDを持つすべてのプロセスが選択されます。シンボルの後に関心のあるPIDを指定すると、=
ヘッダー行にそのPIDが含まれていると推定されます。報告される他のプロセスは、端末セッションbash
およびps
プロセス自体のプロセスです。これにより、次のことがわかります。
ps -o comm,pgid=21814