Quando eu mato um subprocesso criado em um script bash - ele automaticamente gera novamente. Por quê?

2

Eu tenho o seguinte script que eu executo usando o comando:

./thescript.sh 2>&1 &

e se eu matar o sub processo gerado por ele, após alguns segundos ele será reiniciado. Por que isso acontece?

thescript.sh:

#!/bin/bash

#...
#other stuff
#...

while true; do
         nohup /usr/bin/php ../thing/script.php scriptargs >my_log.log 2>&1
        /bin/mail -s "$SUBJECT" "[email protected]" < $EMAILMESSAGE
done

o resultado de

     ps -ax | grep scriptargs

19624 pts/0    S      0:00 /bin/bash ./thescript.sh
19643 pts/0    S      0:00 /usr/bin/php ../thing/script.php scriptargs
19771 pts/0    S+     0:00 grep scriptargs

se eu correr

kill 19643

Eu recebo:

./thescript.sh: line 24: 19643 Terminated /usr/bin/php ../thing/script.php scriptargs >my_log.log 2>&1

mas, em seguida, execute:

     ps -ax | grep scriptargs

novamente eu recebo:

19624 pts/0    S      0:00 /bin/bash ./thescript.sh
19824 pts/0    S      0:00 /usr/bin/php ../thing/script.php scriptargs
19862 pts/0    S+     0:00 grep scriptargs

Eu recebo o e-mail, mas ele reaparece esse processo.

Por que isso acontece?

    
por Stevo 05.10.2012 / 15:48

1 resposta

3

Isso seria por causa do loop

while true; do

done

Quando o processo é morto, ele sai e permite que o email seja enviado. O shell, em seguida, atinge a instrução done e faz o loop do while true , o qual é verdadeiro, então executa os comandos dentro, novamente.

    
por 05.10.2012 / 15:55

Tags