如何杀死一个shell脚本和它创建的进程?
Posted
技术标签:
【中文标题】如何杀死一个shell脚本和它创建的进程?【英文标题】:How to kill a shell script and processes it created? 【发布时间】:2013-08-01 20:39:46 【问题描述】:我在 php 中运行一个 shell 脚本(使用 shell_exec)。我想杀死它以及它在运行时创建的所有进程。我知道shell脚本pid。你有什么建议吗? 我正在使用 ubuntu,php 作为 apache 模块。
谢谢。
例子:
#!/bin/bash
echo hello
sleep 20
当我终止我的脚本 (shell_exec("sudo kill -9 $pid")) 时,睡眠进程不会被终止,这是不希望的。
【问题讨论】:
一般来说,杀死 shell 也会杀死它的子进程。否则,请了解进程组。 【参考方案1】:使用
pkill -TERM -P pid
会杀死子进程
见this answer
【讨论】:
它会杀死进程 pid 及其子进程,但不会杀死孙子或以下进程。 anubhava's answer下面可以全部杀掉,也可以在this question看到其他答案,如1,2【参考方案2】:改用这个 kill 命令:
kill -- -$pid
杀死正在运行的脚本及其所有衍生的孩子。
【讨论】:
我愿意。 “sudo kill -- -3768”,我得到了“Kill:没有这样的进程”。 你可以先从命令行试试。我已经尝试过你的脚本并且它有效。以上是关于如何杀死一个shell脚本和它创建的进程?的主要内容,如果未能解决你的问题,请参考以下文章