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