1

我有一个 CentOS 7 服务器虚拟机。在我Apache Apollo安装的这个虚拟机中

我刚刚创建了下面给出的脚本

#!/bin/bash

if pidof -x "apollo" >/dev/null; then
echo "Apollo MQTT is Running."
exit 0
else
echo "Apollo MQTT is Stopped."
exit 2
fi

使用上面的脚本我想检查 apollo 服务是否正在运行。但是当我使用下面的命令运行这个脚本时

sh filename

它在服务运行时给出输出Apollo MQTT is Stopped

当我在命令下运行时

ps -ef | grep apollo

它给出了以下输出

root       8647      1  3 10:49 pts/0    00:00:55 java -ea -server -Xmx1G -XX:+HeapDumpOnOutOfMemoryError -XX:-UseBiasedLocking -Dcom.sun.management.jmxremote -Dapollo.home=/opt/apollo -Dapollo.base=/var/lib/mqtt -classpath /opt/apollo/lib/apollo-boot.jar org.apache.activemq.apollo.boot.Apollo /var/lib/mqtt/lib\;/opt/apollo/lib org.apache.activemq.apollo.cli.Apollo run
root       9426   8233  0 11:15 pts/0    00:00:00 grep --color=auto apollo
4

2 回答 2

1

你可以用这个;

if (( $(ps -ef | grep -v grep | grep -i apollo | wc -l) > 0 ))
then
 echo "Apollo MQTT is Running."
 exit 0
else
 echo "Apollo MQTT is Stopped."
 exit 2
fi
于 2016-08-17T06:57:49.473 回答
1

我相信你忽略了一个问题。该进程是一个java实例,pidof您的程序是java实例的。pidof什么都不知道apollo,因为这对他来说就像一个论据。

我会推荐来自 muzido 的解决方案

于 2016-08-17T07:09:23.863 回答