Estou escrevendo um script bash simples para desligar o Tomcat e, se ele não parar normalmente, verifique se o PID do Tomcat ainda existe e elimine-o.
Passo o nome do Tomcat como uma variável para o script conforme abaixo. Em alguns casos passo dois ou três nomes do tomcat, por isso o uso do FOR LOOP abaixo
./shutdown.sh tomcat1
Conteúdo do script Shutdown.sh
#!/bin/bash
for name in "$@"
do
bash /opt/$name/bin/shutdown.sh
done
sleep 30
for name in "$@"
do
process_id=`ps -ef | grep $name | grep -v grep | awk '{ print $2 }'`
if [ $process_id ]
then
kill -9 $process_id
fi
done
echo " Script Execution completed"
Quando o Tomcat é desligado normalmente, não há problema. Mas quando o Tomcat não para, estou tendo problemas.
O trecho de código abaixo, quando executado diretamente no prompt de comando, fornece o ID do processo correto (62457) do Tomcat. Mas o mesmo pedaço de script de shell está me fornecendo três IDs de processo (62610,62611,62457).
process_id=`ps -ef | grep $name | grep -v grep | awk '{ print $2 }'`
você pode me dizer por que estou recebendo três IDs de processo no script em comparação com apenas um?
Alguma outra sugestão mais fácil de KILL?