我想杀死整个进程树。使用通用脚本语言实现这一目标的最佳方法是什么?我在寻找一个简单的解决办法。
当前回答
ps -o pid= --ppid $PPID | xargs kill -9
其他回答
brad的答案也是我推荐的,除了如果你使用——ppid选项ps,你可以完全放弃awk。
for child in $(ps -o pid -ax --ppid $PPID) do ....... done
使用psutil使用python非常容易做到这一点。只要用pip安装psutil,你就有了一整套进程操作工具:
def killChildren(pid):
parent = psutil.Process(pid)
for child in parent.get_children(True):
if child.is_running():
child.terminate()
pkill -TERM -P 27888
这将杀死父进程ID为27888的所有进程。
或者更有力:
CPIDS=$(pgrep -P 27888); (sleep 33 && kill -KILL $CPIDS &); kill -TERM $CPIDS
它将kill安排在33秒后,并礼貌地要求进程终止。
请参阅终止所有子代的答案。
rkill命令从pslist包发送给定的信号(或SIGTERM默认)到指定的进程及其所有后代:
rkill [-SIG] pid/name...
这个脚本也可以工作:
# / bin / sh 而真正的 做 输入父进程id [type quit for exit] 读ppid if [$ppid -eq "quit" -o $ppid -eq "quit"] 退出0 fi I in ' ps -ef| awk '$3 == '$ppid' {print $2}' ' 做 Echo杀死$i 杀死我美元 完成 完成
推荐文章
- 在Bash中检查变量是否存在于列表中
- 查看PS命令的全部输出
- 确保一次只运行一个shell脚本实例的快速方法
- Linux命令将域名转换为IP
- 如何从命令行在windows中找到mysql数据目录
- 如何在Makefile中设置子进程的环境变量
- 如何让“wc -l”打印没有文件名的行数?
- 有效地测试Linux上的端口是否打开?
- 如何从另一个文件A中删除文件B中出现的行?
- 对以制表符分隔的文件进行排序
- Shell脚本删除超过n天的目录
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何检查shell脚本中是否存在命令?
- 如何使用查找命令从列表中查找所有具有扩展名的文件?