我编写了简单的脚本来检查服务的状态,当服务关闭时搜索服务的活动进程并终止它们,然后删除 pid 文件并重新启动服务。
问题是该脚本并不总是能够删除 pid 文件,这导致该脚本无法重新启动服务。
这是脚本:
#!/bin/bash
SHELL=/bin/bash
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
echo $(date +%d/%m/%Y-%H:%M)
service zabbix-java-gateway restart
sleep 1
service zabbix-java-gateway status > /tmp/status_zabbix_java_gateway
if grep "is running..." /tmp/status_zabbix_java_gateway
then
echo "zabbix-java-gateway is runnign on $HOSTNAME"
echo " "
rm -rf /tmp/status_zabbix_java_gateway
else
echo "zabbix-java-gateway is stopped on $HOSTNAME"
echo " "
output=`ps aux|grep zabbix_java`
set -- $output
pid=$2
kill $pid
sleep 2
kill -9 $pid >/dev/null 2>&1
sleep 2
rm -rf /var/run/zabbix/zabbix_java.pid
echo "zabbix-java-gateway is stopped on $HOSTNAME!!!" > /tmp/mail_zabbix_java_gateway
mail -s "Zabbix Java Gateway is down on !!!" [email protected] < /tmp/mail_zabbix_java_gateway
/etc/init.d/zabbix-java-gateway restart
rm -rf /tmp/mail_zabbix_java_gateway
rm -rf /tmp/status_zabbix_java_gateway
fi
请给我一些建议。
答案1
首先,您可能应该只使用 Zabbix 附带的 startup.sh 脚本。其次,您为什么需要这样的检查?如果网关运行不正常,您应该解决根本问题。