2012-01-06 17 views
9

Tengo un script debajo que me gustaría repetir "jboss no se está ejecutando" o "jboss se está ejecutando", dependiendo de si puede encontrar el proceso jboss en la lista de procesos. Sin embargo, cuando apago Jboss, todavía ejecuta la condición Else y dice "jboss se está ejecutando". Si hago manualmente "pgrep -f jboss", no devuelve nada, entonces ¿por qué todavía entra en la condición Else? desconcertado¿Cómo comprobar si JBoss se está ejecutando en el servidor Unix?

#!/bin/bash 
if [ -z "$(pgrep -f jboss)" ] 
    then 
    echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 

Gracias por su ayuda!

Respuesta

0

Run JPS, grep por la línea con que JBoss, cortan la PID de la línea y comprobar el PID.

3

intente utilizar el exit status del comando -

#!/bin/bash 

pgrep -f jboss &> /dev/null 
if [ $? -eq 0 ] 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
12

En lugar de comprobar la salida, sólo tiene que utilizar el comando:

if pgrep -f jboss >/dev/null 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
-2

No puedes comprueba la jboss de esa manera. Dado que Jboss comenzó a veces, el tiempo de registro es de 1 a 2 minutos. Por lo tanto, su script muestra solo el proceso Jboss, no el "Jboss realmente está ARRIBA" (me refiero a la aplicación en JBoss).

+0

No ha respondido a su pregunta; usted acaba de explicar por qué su cheque no es lo suficientemente bueno para monitorear jboss. – itsbruce

1
#! /bin/bash 
if [ -z "$(ps -ef | grep org.jboss.Main)" ] 
then 
echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 
1

Esta es la mejor manera:

if [ -z "$(ps -ef | grep java | grep jboss)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
2

Obtener el proceso de identificación de JBoss 7/EAP 6:

pgrep -f org.jboss.as 

Así que si desea mejorar el anterior script de ejemplo con esto:

if [ -z "$(pgrep -f org.jboss.as)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
0

La mejor manera es utilizar este

result=`$jboss/bin/jboss-cli.sh --connect controller=localhost:$controller_port --commands=\"read-attribute server-state\" > out 2&1` 
echo "$result" | grep -q "running" 
if [ $? -eq 0 ];then 
    echo "Jboss running" 
fi 

Si desea comprobar si el oído o archivo de la guerra se despliega a continuación, se puede utilizar el siguiente comando

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE" 
Cuestiones relacionadas