2014-01-10 83 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 $! 
相關問題