É provável que o servidor jboss tenha um manipulador de finalização no caso de ter sido interrompido durante o processamento de E / S (por exemplo, gravação no banco de dados). Os sinais TERM
e INT
podem ser manipulados para garantir que o banco de dados não seja corrompido quando o sinal chegar e o processo estiver ocupado fazendo E / S.
Com SIGKILL
não há graça - o processo é executado sem piedade, não importa o que esteja fazendo. Não há manipulador permitido para um sinal SIGKILL. Isso pode ser uma razão importante para evitar matar -9 para a finalização do processo, a menos que não haja alternativa.
Por algum motivo, a eliminação de todo o grupo de processos interfere na finalização e remoção corretas do bloqueio do banco de dados. Tente matar o servidor jboss assim - note que você pode precisar estender o comando kill para garantir que todos os filhos do script também morram (não sei todo o seu script).
trap 'kill -SIGTERM $(jobs -pr)' EXIT HUP TERM INT
O qual matará o jboss pois o comando jobs
retornará os processos em segundo plano executados a partir do shell (ou seja, o processo do jboss no seu caso).