本文主要是介绍如何干掉一组进程,kill group processes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当一个进程组 group leader 死掉后, 遗留下若干进程,要一个一个手工 kill 掉它们是比较讨厌的
下面这个函数可以帮你达到目的
比如当你想杀掉 android zygote的所有进程,可以用
killProcessGroup "android.process.acore" killProcessGroup "android.process.acore"
killProcessGroup() {name=$1echo "kill process group with member '$name' ..."pgids=$(ps -e -o pgid,cmd | grep "[0-9] $name" | awk '{print $1}')for pgid in $pgidsdoecho "kill -9 -$pgid"$(kill -9 -$pgid)done
}
要点:
1) ps 的参数很重要,
-e 是列出所有进程
-o 指定输出格式 -o pgid,cmd 是输出 groudid, 和命令行的名字
2)grep 是为了找到指定的 name 的进程
grep "[0-9] $name"
前面必须匹配一个数字, 这是为了过滤掉 自己因为它名字是 "grep $name"
当然可以再加一级过滤
grep "[0-9] $name" | grep -v grep
3) awk 是选择只需要 groupid
4) 最后也是最重要的是在kill 命令中, groupid 前面要加 - 号
kill -9 -$pgid
这篇关于如何干掉一组进程,kill group processes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!