我正在尝试编写一个命令来终止与字符串匹配的所有进程。我有执行权限,kill -9
但是当我尝试执行时,pkill -f string
我得到了operation not permitted
。
这是我到目前为止所拥有的:
ps aux | grep -E 'python2|python3'
这会获取所有 python 进程的所有 PID。然而,我的 sed 和 grep 魔法还不足以解析出要执行的 pid:
kill -9 | <sed magic> | grep -E 'python2|python3'
有人可以帮助实现上述魔法吗?
答案1
pgrep "$expression" | xargs kill -9
这将用于pgrep
搜索与指定进程名称匹配的 PID,然后将这些 PID 踢出kill
执行。
也就是说,kill -9
永远不应该将其作为例行公事进行。进程应设计为处理TERM
(15) 信号并正确地自行清理。
另外,请注意,您只能向您拥有的进程发送信号(如果您不是超级用户),因此,如果您匹配任何不属于您的进程并尝试向它们发送信号,您将受到正确的警告。