如何检查JBoss是否在Unix服务器上运行?

我有一个脚本下面,我想回声“jboss不运行”或“jboss运行”取决于它是否可以在进程列表中findjboss进程。 但是,当我closuresJboss的时候,它仍然执行Else条件,并且说“jboss正在运行”。 如果我手动执行“pgrep -f jboss”,它不会返回任何东西,那么为什么它仍然会进入其他条件? 困惑

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

谢谢你的帮助!

Solutions Collecting From Web of "如何检查JBoss是否在Unix服务器上运行?"

而不是检查输出,只需使用命令:

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

尝试使用命令的exit status

 #!/bin/bash pgrep -f jboss &> /dev/null if [ $? -eq 0 ] then echo "jboss is running" else echo "jboss is not running" fi 

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

这是最好的方法:

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

运行jpsgrep它为你的jboss行,从行中剪切 PID并检查PID。

最好的方法是使用这个

 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 

如果你想检查耳朵或战争文件是否部署,那么你可以使用下面的命令

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

你不能以这种方式检查jboss。 因为Jboss有时会以1-2分钟的时间记录时间。 所以你的脚本只显示进程Jboss,而不是“Jboss真正起来”(我指的是在JBoss上的应用程序)。