2014-01-10 82 views
0

我想写一个bash脚本来运行一个进程接连不同的命令行选项大约1024次。然而,其中一个进程包含一个无限循环,我试图在循环的另一个迭代开始之前终止该进程。Bash脚本:当其他完成时杀死一个进程

所以这里是我试过到目前为止(PROG1包括无限循环,我想,当PAPI完成运行后杀吧):

#!/bin/bash 
for ((i=0; i<32780; i+=32)) 
do 
    ./prog1 $i & 
    pid=$!; 
    sleep 5s 
    ./papi 
    kill -s 2 $pid 
done 

但是它不会杀死任何prog1情况下,当然它在每次迭代开始时继续创建它们。我究竟做错了什么?

+1

确实PROG1忽略信号2?如果您使用KILL,它会起作用吗? –

+0

你的脚本以外的杀人行为是否可行?你尝试过“杀死-9”吗? –

+3

你为什么使用SIGINT? kill的默认值是SIGTERM,如果使用它,会发生什么情况? – Graeme

回答

0

它杀死完成之前的方法:

pkill $! 

例如:

telnet 192.168.1.1 1>/dev/null 2>&1 & 
pkill $! 
相关问题