2012-01-06 22 views
9

Ho uno script qui sotto che mi piacerebbe echo out "jboss not running" o "jboss is running" a seconda che possa trovare il processo jboss nella lista dei processi. Tuttavia, quando chiudo Jboss, esegue ancora la condizione Else e dice "jboss sta funzionando". Se faccio manualmente "pgrep -f jboss" non restituisce nulla, quindi perché sta ancora entrando nella condizione Else? perplessoCome verificare se JBoss è in esecuzione sul server Unix?

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

Grazie per il vostro aiuto!

risposta

0

Run jps, grep per la linea con voi JBoss, tagliare il PID dalla linea e controllare il PID.

3

provare ad utilizzare la 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

Invece di controllare l'output, basta usare il comando:

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

Non puoi controllare il JBoss in quel modo. Poiché Jboss ha iniziato a volte il tempo di registrazione come 1-2 minuti. Quindi il tuo script mostra solo il processo Jboss, non il "Jboss è davvero SU" (intendo l'applicazione su JBoss).

+0

Non hai risposto alla sua domanda; hai appena spiegato perché il suo assegno non è abbastanza buono per monitorare 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

Questo è il modo migliore:

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

Prendi il processo ID JBoss 7/EAP 6:

pgrep -f org.jboss.as 

Quindi, se si vuole migliorare l'ex script di esempio con this:

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

Il modo migliore è utilizzare questo

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 

Se si vuole verificare se l'orecchio o il file viene distribuito guerra allora si potrebbe utilizzare il seguente comando

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