it-swarm.com.de

Wie überprüfe ich, ob JBoss auf einem Unix-Server läuft?

Ich habe unten ein Skript, das "jboss wird nicht ausgeführt" oder "jboss wird ausgeführt" ausgeben soll, je nachdem, ob der jboss-Prozess in der Prozessliste gefunden wird. Wenn ich Jboss heruntergefahren habe, wird die Bedingung "Else" weiterhin ausgeführt und "Jboss wird ausgeführt" angezeigt. Wenn ich manuell "pgrep -f jboss" mache, gibt es nichts zurück. Warum geht es also immer noch in den Else-Zustand über? verwirrt

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

Danke für Ihre Hilfe!

10
user1060096

Statt die Ausgabe zu überprüfen, verwenden Sie einfach den Befehl:

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

Versuchen Sie es mit dem exit status des Befehls - 

#!/bin/bash

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

Holen Sie sich die Prozess-ID JBoss 7/EAP 6:

pgrep -f org.jboss.as

Wenn Sie also das vorherige Beispielskript mit folgenden Informationen verbessern möchten:

if [ -z "$(pgrep -f org.jboss.as)" ]
then 
 echo "JBoss is NOT running"
else
  echo "JBoss is running"
fi 
2
bushiebear
#! /bin/bash
 if [ -z "$(ps -ef | grep org.jboss.Main)" ]
then 
 echo "jboss is not running"
else
  echo "jboss is running"
fi
1
RAJKUMAR.B

Dies ist der beste Weg:

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

sie können die Funktion unten im Bash-Skript verwenden. unterhalb der Funktion wird die PID von Jboss zurückgegeben, wenn Jboss noch gestartet ist. Beachten Sie, dass $ 1 das Basisverzeichnis Ihres jboss ist. Zum Beispiel: $ 1 =/root/app/wildfly-X.Final

function getJbossPID() {
local pid;
local DIR=$1;
if [[ ! -z $DIR ]]; then
    local result=();
    jps=`jps -m`
    if [[ ! -z $jps ]]; then
        IFS='
        '
        jps_result=`jps -m`
        for jps_line_result in $jps_result; do
            result_jps=$jps_line_result;
            if [[ $result_jps == *$DIR* ]]; then
                unset IFS
                array=( $result_jps );
                pid=${array[0]};
            fi
        IFS='
        '
        done;
        unset IFS;
    fi
fi
echo $pid;
}

sie können die obigen Funktionen wie folgt verwenden:

PID = $ (getJbossPID $ YOUR_JBOSS)

Führen Sie jps , grep it für die Zeile mit Ihnen jboss, cut thePIDaus der Zeile und überprüfen Sie die PID.

0
Rostislav Matl

Am besten verwenden Sie dies 

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

Wenn Sie prüfen möchten, ob die Datei "Ohr oder Krieg" bereitgestellt wird, können Sie den folgenden Befehl verwenden 

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT  --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE" 
0
Raghu K Nair