Process

殺死一組PID為負的程序

  • April 16, 2019
kill -TERM -PID 

應該殺死 PID 及其所有子程序。

但這在 openSUSE 上不起作用,它總是告訴我,無論我使用什麼 PID,都沒有這樣的程序 -PID。

因此,如果此特定版本的 kill 不支持負 PID 選項,那麼殺死一組程序的最佳方法是什麼?

背景:

我有一個 shell 腳本正在執行。在腳本里面,我使用 wget 來下載東西。所以script是父程序,wget是子程序。我想用 kill -TERM -PID_OF_SCRIPT 殺死他們倆

它是說“沒有這樣的PID”還是有錯誤,就像這行得通嗎?

kill -TERM -- -GPID

另請注意,根據(強調我的)

man 1

"$$ … $$當給出“-n”形式的參數時,它表示一個程序組 $$ … $$"

男2

"$$ … $$如果 pid 小於 -1,則將 sig 發送到ID 為 -pid 的程序組中的每個程序。 $$ … $$"

男人3

"$$ … $$如果 pid 為負數,但不是 -1,則應將 sig 發送給程序組 ID等於 pid 絕對值的所有程序(不包括未指定的系統程序集),$$ … $$"

如,不是 PID,而是程序組 ID。


否則,也許你可以用/proc/玩得很開心$$ pid $$/狀態

ppid: awk '{gsub(/\([^)]+\)/,"_"); print $4}' /proc/3955/stat
pgrp: awk '{gsub(/\([^)]+\)/,"_"); print $5}' /proc/3955/stat

pkill -TERM -g PGRP

引用自:https://unix.stackexchange.com/questions/68754