我有一个脚本,我想回应“jboss not running”或“jboss正在运行”,具体取决于它是否可以在进程列表中找到jboss进程。但是,当我关闭Jboss时,它仍然执行Else条件并说“jboss正在运行”。如果我手动执行“pgrep -f jboss”它不返回任何内容,那为什么它仍然会进入Else条件? 不解
#!/bin/bash
if [ -z "$(pgrep -f jboss)" ]
then
echo "jboss is not running"
else
echo "jboss is running"
fi
感谢您的帮助!
答案 0 :(得分:17)
不要检查输出,只需使用命令:
if pgrep -f jboss >/dev/null
then
echo "jboss is running"
else
echo "jboss is not running"
fi
答案 1 :(得分:3)
尝试使用命令的exit status
-
#!/bin/bash
pgrep -f jboss &> /dev/null
if [ $? -eq 0 ]
then
echo "jboss is running"
else
echo "jboss is not running"
fi
答案 2 :(得分:2)
获取进程ID JBoss 7 / EAP 6:
pgrep -f org.jboss.as
所以如果你想用这个增强前面的例子脚本:
if [ -z "$(pgrep -f org.jboss.as)" ]
then
echo "JBoss is NOT running"
else
echo "JBoss is running"
fi
答案 3 :(得分:1)
#! /bin/bash
if [ -z "$(ps -ef | grep org.jboss.Main)" ]
then
echo "jboss is not running"
else
echo "jboss is running"
fi
答案 4 :(得分:1)
这是最好的方法:
if [ -z "$(ps -ef | grep java | grep jboss)" ]
then
echo "JBoss is NOT running"
else
echo "JBoss is running"
fi
答案 5 :(得分:0)
运行 jps , grep 为您的行jboss,剪切 PID 来自该行检查PID。
答案 6 :(得分:0)
最好的方法是使用此
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
如果要检查是否部署了ear或war文件,则可以使用以下命令
$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE"
答案 7 :(得分:0)
您可以在bash脚本中使用以下功能;如果尚未启动Jboss,则下面的函数将返回Jboss的PID。注意$ 1是jboss的基本目录。例如: $ 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;
}
您可以使用与以下相同的功能:
PID = $(getJbossPID $ YOUR_JBOSS)
答案 8 :(得分:-2)
你不能以这种方式检查jboss。 因为Jboss有时开始记录1-2分钟。 所以你的脚本只显示进程Jboss,而不是“Jboss is up UP”(我的意思是JBoss上的应用程序)。