Primeiro, não use kill -9
; um simples kill
deve ser suficiente. Segundo, veja esta página para uma boa explicação de como matar processos filhos quando o pai é instruído a sair. Nesse caso, startWstim
precisa cuidar de matar o programa Java antes de sair.
Por fim, pode ser mais simples dispensar startWstim
e, em vez disso, executar os comandos que ele contém diretamente em seu script de inicialização:
start)
printf "%-50s" "Starting $NAME..."
cd $DAEMON_PATH
echo "$(date +"%Y/%m/%d %T") - start WSTLm" >> /mnt/Data/wstlm/wstlm.log
java -Djavax.net.ssl.trustStore=jssecacerts -jar /mnt/Data/wstlm/myProgram.jar &
PID=$!
Note que você não precisa de um subshell para obter o ID do processo do programa Java, e você precisa capturar a saída do comando date
para imprimi-lo no arquivo de log.