如何杀死Bash中的子进程?

问题描述:

我试图做一个操作,在linux尝试使用OpenSSL的速度如何杀死Bash中的子进程?

这是来自Netflix的猿猴军队我的代码烧CPU

#!/bin/bash 
# Script for BurnCpu Chaos Monkey 

cat <<EOF> /tmp/infiniteburn.sh 
#!/bin/bash 
while true; 
    do openssl speed; 
done 
EOF 

# 32 parallel 100% CPU tasks should hit even the biggest EC2 instances 
for i in {1..32} 
do 
    nohup /bin/bash /tmp/infiniteburn.sh & 
done 

所以这是Netflix的猿军队代码做烧CPU,这执行正常,但问题是我不能杀死所有32个进程,我什么都试过

pkill -f pid/process name 
killall -9 pid/process name 
etc., 

唯一的成功之路是我杀了这个过程是经由用户

杀死它
pkill -u username 

如何在不使用用户名的情况下杀死这些进程?

任何帮助是极大的赞赏

+0

您是否试过'kill -9 pid'? –

+0

是的,我试过没有运气 –

+0

可能相关/可能是一个重复:[杀死所有子进程的最佳途径](http://stackoverflow.com/q/392022)。密切相关的是[如何杀死shell的所有子进程?](http://stackoverflow.com/q/2618403/)有更多Bash经验的人,那么我理解这些微妙的东西就必须做出决定。 – jww

终于,我找到了解决我自己的问题,

kill -- -$(ps -o pgid= $PID | grep -o [0-9]*) 

其中PID是任何运行,这工作得很好,但我乐于听到任何其他一个进程的进程ID可用选项

来源:http://fibrevillage.com/sysadmin/237-ways-to-kill-parent-and-child-processes-in-one-command

终止进程不会自动杀其子。杀死你的bash脚本不会中止openssl speed进程。

你可以用你的kill来打一个更宽的网络,这就是你用pkill -u所做的。或者您可以在脚本中使用trap并添加错误处理程序。

cleanup() { 
    # kill children 
} 

trap cleanup EXIT 
+0

你可以投一个更广泛的网络与你的杀死电话?你能否提供更多关于这方面的信息, –