2014-01-10 2 views
0

Я пытаюсь написать сценарий bash для запуска одного процесса за другим примерно 1024 раза с различными параметрами командной строки. Однако один из процессов включает бесконечный цикл, и я пытаюсь убить этот процесс, прежде чем начнется другая итерация цикла.Bash script: Убейте один процесс, когда другие завершатся

Так вот что я пытался до сих пор (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 $! 
Смежные вопросы