2012-01-06 160 views
9

我有一个脚本下面,我想回声“jboss不运行”或“jboss正在运行”,具体取决于它是否可以在进程列表中找到jboss进程。但是,当我关闭Jboss时,它仍然执行Else条件并且说“jboss正在运行”。如果我手动执行“pgrep -f jboss”,它不会返回任何内容,那么为什么它仍然会进入Else状态? 不解如何检查JBoss是否在Unix服务器上运行?

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

感谢您的帮助!

回答

0

运行JPSgrep的它随你行JBoss和PID从线并检查PID。

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 
12

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

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

你不能检查的JBoss那样。 因为Jboss有时会以1-2分钟的时间记录时间。 因此,你的脚本只显示进程Jboss,而不是“Jboss真的很忙”(我的意思是JBoss上的应用程序)。

+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 

;你只是解释了他的支票为什么不足以监控jboss。 – itsbruce 2012-10-26 12:19:15

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

这是最好的办法:

if [ -z "$(ps -ef | grep java | grep jboss)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
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 
0

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

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