我想使用在启动时调用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!!!
到目前为止,我还未能弄清楚为什么会这样。有人可以帮忙吗?
答案 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
的输出来检查。