闲来没事写了个httpd服务自动监控脚本
看一个服务是否在启动状态,看他端口号
cat /etc/httpd/conf/httpd.conf | grep Listen | grep -v '#' | awk '{print$2}'
然后用netstat查看他现在开启的服务
查询出来将他们做一个比较,一个服务检测脚本就成型了
#!/bin/bash
http_server() {
port1=$(netstat -ntpl | grep httpd | awk -F ' ' '{print$4}' | cut -d ':' -f 4)
port2=$(cat /etc/httpd/conf/httpd.conf | grep Listen | grep -v '#' | awk '{print$2}')
if [ $port1 = $port2 ]
then
echo "1"
else
echo "0"
fi
}
for i in `seq 100`
do
http_server
sleep 3
if [ $(http_server) = 1 ]
then
echo "正常运行" >> /opt/http_server.log
else
echo "错误,重新启动" >> /opt/http_server.log
systemctl start httpd
fi
done
将其端口号对比,如果一样,输出1,服务运行正常
否则输出0,服务没有正常运行,重启
然后将其写成服务
[Service]
ExecStart=/root/shell1
ExecReload=/root/shell1
ExecStop=/bin/kill
开启自启动
systemctl enable shell1
一个服务检测脚本就成功了