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.