web-dev-qa-db-fra.com

Comment vérifier si JBoss fonctionne sur un serveur Unix?

J'ai un script ci-dessous dans lequel j'aimerais faire écho "jboss not running" ou "jboss is running", selon qu'il peut ou non trouver le processus jboss dans la liste des processus. Cependant, lorsque je ferme Jboss, il exécute toujours la condition Else et dit "jboss est en cours d'exécution". Si je fais manuellement "pgrep -f jboss", il ne retourne rien, alors pourquoi est-il toujours dans la condition Else? perplexe

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

Merci de votre aide!

10
user1060096

Au lieu de vérifier le résultat, utilisez simplement la commande suivante:

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

Essayez d’utiliser le exit status de la commande - 

#!/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

Obtenez l'ID de processus JBoss 7/EAP 6:

pgrep -f org.jboss.as

Donc, si vous voulez améliorer l'ancien script d'exemple avec ceci:

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

C'est la meilleur façon:

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

vous pouvez utiliser la fonction ci-dessous dans le script bash; sous la fonction, retourne le PID de Jboss si Jboss est déjà lancé. remarquez que $ 1 est le répertoire de base de votre jboss. par exemple: $ 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;
}

vous pouvez utiliser la fonction ci-dessus comme ci-dessous:

PID = $ (getJbossPID $ YOUR_JBOSS)

Exécuter jps , grep it pour la ligne avec vous jboss, couper lePIDà partir de la ligne et vérifier le PID.

0
Rostislav Matl

La meilleure façon est d'utiliser cette 

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 vous voulez vérifier si ear ou war file est déployé, vous pouvez utiliser la commande suivante 

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