守护程序启动脚本报告错误状态

时间:2016-01-07 16:41:46

标签: bash

我想使用在启动时调用iperf的启动脚本以及我可以使用chkconfig实用程序指定的内容,并且如果我选择的话,只需从命令行控制iperf作为典型服务。以下是我到目前为止的情况:

#!/bin/bash

# chkconfig: - 50 50
# description: iperf

DAEMON=/usr/bin/iperf
service=iperf
info=$(pidof /usr/bin/iperf)

case "$1" in
      start)
              $DAEMON -s -D
              ;;
      stop)
              pidof $DAEMON | xargs kill -9
              ;;
      status)
              if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
              then
              echo $DAEMON pid $info is running!!!
              else
              echo $DAEMON is NOT running!!!
              fi
              ;;
      restart)
              $DAEMON stop
              $DAEMON start
              ;;
      *)
              echo "Usage: $0 {start|stop|status|restart}"
              exit 1
              ;;
esac

到目前为止一切正常。我可以使用脚本启动和停止服务。我可以将它添加到chkconfig没问题。但是我注意到即使iperf没有运行,当我使用status命令时它仍然将它作为运行返回:

随着它的运行:

 # service iperf status
/usr/bin/iperf pid 34828 is running!!!

没有它运行:

# service iperf status
/usr/bin/iperf pid is running!!!

到目前为止,我还未能弄清楚为什么会这样。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您正在检查:

if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))

然后用:

运行脚本
service iperf status

所以我的猜测是ps -ef | ... | grep iperf也找到了这个脚本的调用。您可以通过打印ps -ef | grep -v grep | grep $service的输出来检查。