Como matar o processo que gera vários programas java que cada um pega uma porta

2

Eu tenho um programa .sh que gera vários proces filhos assim:

javac *.java
rmiregistry 3300 & 
sleep 5
java Node 3300 3001 1 &
sleep 1
java Node 3300 3002 1 &
sleep 1
java Node 3300 3003 1 &
sleep 1
java Node 3300 3004 1 &
sleep 1
java Node 3300 3005 1 &

Agora, quando eu executo isso em uma tela de terminal eu gostaria de ser capaz de fazer algo como ctr-c para parar isso. No entanto, quando eu faço isso não libera as portas tomadas pelos nós. Existe alguma maneira de certificar-se de que quando eu ctr-c as portas estão desassociadas ou há uma tecla de atalho que também libera as portas usadas pelos processos filho? Ou eu tenho que usar um comando kill separado? Observe também que os nós podem e lançam vários segmentos (de dentro de java).

    
por Thijser 26.04.2016 / 12:01

2 respostas

0

A maneira de eliminar todos os jobs iniciados por um processo é usar o ID do grupo de processos (pgid). A maneira mais simples de ver isso é lançar o seu script em segundo plano:

$ launch_java.sh &
[1] 25649

O número impresso acima é o PID do launch_java.sh , que também é o ID do grupo, uma vez que o resto é iniciado. Alternativamente, você pode encontrá-lo através de ps :

$ ps -a -o pgid,command | grep java
25649 java Node 3300 3002 1 

O primeiro campo é o pgid. Depois disso, você pode usar kill para eliminá-lo e todos os seus filhos:

kill -TERM -25649

Como explicado em man kill :

          -n     where n is larger than 1.  All processes in process group
                 n are signaled.  When an argument of  the  form  '-n'  is
                 given,  and it is meant to denote a process group, either
                 a signal must be specified first, or the argument must be
                 preceded  by a '--' option, otherwise it will be taken as
                 the signal to send.
    
por terdon 26.04.2016 / 12:15
-1

use o comando ps -aef ou ps -aux para encontrar o PID do pai de filhos e mate-o por kill -9 PID .

    
por Ali Ghasempour 26.04.2016 / 12:11