kill -TERM -PID
PIDとすべての子プロセスを終了する必要があります。
しかし、これはopenSUSEでは機能しません。どのPIDを使用しても、常にそのようなプロセスPIDがないことを伝えます。
したがって、この特定のバージョンのkillが負のPIDオプションをサポートしていない場合、プロセスグループを終了する最良の方法は何ですか?
背景:
シェルスクリプトを実行しています。スクリプトはwgetを使用してものをダウンロードします。したがって、scriptは親プロセスであり、wgetは子プロセスです。 kill -TERM -PID_OF_SCRIPT を使って殺したい。
ベストアンサー1
「該当するPIDなし」と表示されていますか?それともエラーがありますか? - 動作しますか?
kill -TERM -- -GPID
また(強調内)によると
男1:
"[...] '-n' 形式の引数が指定された場合、これは次を示すためのものです。プロセスグループ[… ]」
男2:
"[...] pid が -1 より小さい場合、プロセス内のすべてのプロセスに sig が送信されます。IDが-pidのプロセスグループ。[… ]」
男3:
「[...] pidが負であるが-1でない場合、sigは以下を実行するすべてのプロセス(未指定のシステムプロセスセットを除く)に送信されます。プロセスグループIDpidの絶対値と同じです。 [… ]」
たとえば、PIDではなくプロセスグループIDです。
そうでなければ楽しく遊べると思います。/proc/[pid]/stat
ppid: awk '{gsub(/\([^)]+\)/,"_"); print $4}' /proc/3955/stat
pgrp: awk '{gsub(/\([^)]+\)/,"_"); print $5}' /proc/3955/stat
pkill -TERM -g PGRP