Kill
killall 僅用於此終端
在調試時,我經常使用
killall
殺死一個程序。這確實是一個壞習慣,因為系統上可能有更多同名的程序在執行。通常,我要殺死的程序是與
killall
開始時相同的父(或祖父)的後代。通常我想殺死在同一個終端或另一個選項卡(在 Konsole 中)中的終端啟動的程序。有沒有辦法告訴
killall
(或另一個殺手)將範圍限制為從此終端啟動的程序或來自同一(祖)父級的後代的程序?
如果您想從該會話中終止所有程序(將目前 tty 作為其控制終端的程序):
tty=`tty`; pkill -t "${tty#/dev/}"
或者更簡單:
pkill -s 0
根據 pkill(1):
-s, --session sid,... Only match processes whose process session ID is listed. Ses- sion ID 0 is translated into pgrep's or pkill's own session ID.
-t
和選項都-s
可以與模式和其他選項組合(ANDed),例如。pgrep -s0 -x foo
對於此會話中的程序,其名稱為foo
. 不幸的是,既不pgrep
也不pkill
支持複雜的tcpdump
- 風格的謂詞。