编写脚本监测Apache服务状态,并实现自动维护功能
Posted 自学吧交流社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写脚本监测Apache服务状态,并实现自动维护功能相关的知识,希望对你有一定的参考价值。
运行环境
CentOS 6.8 、Xshell 5
前言
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
Apache服务的正确运行是是保证网站能够正常访问的前提,在实现服务器Apache状态监测中使用自动化运维会节省大量人力。
我们可以编写一个脚本,用于监测Apache服务状态,如果服务运行正常则记录入正确日志;如果服务down掉了,则脚本自动将服务启动,并将错误记录入错误日志中。每隔10分钟监测一次Apache服务状态,即每隔10分钟自动执行一次脚本。
正文
① 判断httpd进程是否执行
我的电脑是预安装了Apache的,由Apache提供httpd服务
ps aux | grep httpd | grep -v grep
该指令为:列出当前服务器运行的进程,并查找出httpd服务进程。如果httpd
服务正在运行,则会有输出结果,如果httpd
服务未运行,则不会有结果输出。另外需要注意的是我们在使用grep httpd
这条指令的时,引进了httpd这个关键字,所以应加grep -v grep
来排除grep
相关的干扰。
② 编写成脚本文件
vim autoapache.sh
创建一个名为autoapache.sh的脚本文件
我们在vim编辑器中将一下内容写入脚本中
#!/bin/bash
status=$(ps aux | grep httpd | grep -v grep) # 截取httpd进程,并把结果赋予变量status
if [ -n "$status" ] # 如果status的值不为空,即httpd服务存在,则执行then中的命令
then
echo "$(date) httpd is OK!" >> /tmp/autostart-acc.log # 将当前的正确状态记录入正确运行日志中
else
/etc/rc.d/init.d/httpd start &>/dev/null # httpd服务异常时,重新启动httpd服务,并将启动信息扔入null文件夹中
echo "$(date) restart httpd!" >> /tmp/autostart-err.log # 重启httpd服务后,将错误信息记录入错误日志文件中
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
将脚本使用:wq
保存退出
③ 配置脚本文件
chmod -R 777 /root/sh/autoapache.sh #更改脚本执行权限
vim /etc/crontab #使用crontab服务创建自动执行任务
在/etc/crontab文件最后添加定时任务,加入以下文本
*/10 * * * * root /root/sh/autoapache.sh #每隔10分钟自动执行一次脚本
最后重启crontab服务让新配置的定时任务生效 service crond restart
到此我就就已经创建了一个每隔十分钟运行一次用于监测Apache服务状态的脚本了。
FAQ
① 在脚本中我们启动httpd服务用的是/etc/rc.d/init.d/httpd start
,而不是使用service httpd start
。因为前者是Linux中服务启动的标准方法,而后者是RedHat、CentOS等系统中的启动方法,所以为了保证我们的脚本的通用性,选择前者为宜。
② 关于crontab 定时任务的补充:
每五分钟执
*/5 * * * *
每小时执行0 * * * *
每天执行0 0 * * *
每周执行0 0 * * 0
每月执行0 0 1 * *
每年执行0 0 1 1 *
以上是关于编写脚本监测Apache服务状态,并实现自动维护功能的主要内容,如果未能解决你的问题,请参考以下文章
Linux下shell脚本监控Tomcat的状态并实现自动启动
用Python脚本监测.py脚本的进程状态,并实现中断重启。
OGG维护优化脚本(二十四)-OGG状态监控系统--后台脚本