在调试时,我经常使用killall
杀死一个进程。这确实是一个坏习惯,因为系统上可能有更多同名的进程在运行。
通常,我要杀死的进程是与killall
开始时相同的父(或祖父)的后代。通常我想杀死在同一个终端或另一个选项卡(在 Konsole 中)中的终端启动的程序。
有没有办法告诉killall
(或另一个杀手)将范围限制为从此终端启动的进程或同一(祖)父级的后代进程?
在调试时,我经常使用killall
杀死一个进程。这确实是一个坏习惯,因为系统上可能有更多同名的进程在运行。
通常,我要杀死的进程是与killall
开始时相同的父(或祖父)的后代。通常我想杀死在同一个终端或另一个选项卡(在 Konsole 中)中的终端启动的程序。
有没有办法告诉killall
(或另一个杀手)将范围限制为从此终端启动的进程或同一(祖)父级的后代进程?
如果你想杀死这个会话中的所有进程(以当前 tty 作为其控制终端的进程):
或者更简单:
根据 pkill(1):
-t
和选项都-s
可以与模式和其他选项组合(ANDed),例如。pgrep -s0 -x foo
对于此会话中的进程,其名称为foo
. 不幸的是,既不pgrep
也不pkill
支持复杂的tcpdump
- 风格的谓词。