Shell Scripting: múltiples ID de proceso en lugar de uno

Shell Scripting: múltiples ID de proceso en lugar de uno

Estoy escribiendo un script bash simple para apagar Tomcat y, si no se detiene correctamente, verifico si el PID de Tomcat todavía existe y elimínelo.

Paso el nombre de Tomcat como una variable al script como se muestra a continuación. En algunos casos paso dos o tres nombres de Tomcat, razón por la cual el uso de FOR LOOP a continuación

./shutdown.sh tomcat1

Contenido del 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"

Cuando Tomcat se apaga correctamente, no hay problema. Pero cuando Tomcat no se detiene, tengo problemas.

El siguiente fragmento de código, cuando se ejecuta directamente en el símbolo del sistema, me proporciona el ID de proceso correcto (62457) de Tomcat. Pero el mismo fragmento de script de shell me proporciona tres ID de proceso (62610,62611,62457).

process_id=`ps -ef | grep $name | grep -v grep | awk '{ print $2 }'`

¿Puede decirme por qué obtengo tres ID de proceso en el script en comparación con solo uno?

¿Alguna otra sugerencia más fácil para MATAR?

información relacionada