什么是crontab
crontab是linux系统下的定时任务工具,相当于win7系统的任务计划。
crontab可以做什么?
crontab能用来添加linux或者unix系统中的定时任务,让系统定时执行某个命令,比如服务器的数据库需要每天凌晨重启下,不可能每天凌晨起来手动重启。
可以用crontab添加凌晨5点重启数据库的定时任务,系统到每天凌晨5点就会自动重启数据了。
crontab能做的事情还很多,比如定时发送邮件,定时检验库存,定时清理日志,定时备份数据库,总之只要是具有周期性执行的任务基本都可以用crontab来实现,当然前提在linux系统环境下。
crontab简单使用
1,常用基本命令
2,定时任务的时间设置
3,操作实例
1、执行命令: crontab -e
2、输入 * * * * * date >> /tmp/date.log
3、保存后,系统会提示crontab: installing new crontab
4、执行命令: tail -f /tmp/date.log 就能看到系统每分钟都会打印出时间到date.log这个文件
用Crontab+shell实现实时监控系统
在系统网站的运营过程中,我们需要知道网站或者系统是否24小时在正常运行,一般系统正常运作需要两个东西在支持,一个是web服务器,一个是数据库。
需要实时的监控web服务器和数据库是否在运行。
以apache/ target=_blank class=infotextkey>apache服务器和mysql/ target=_blank class=infotextkey>mysql数据库作为例子来分析如何实现需求。
1,监控mysql数据库是否正常运行
正常情况我们登录一台Linux服务器后,想要查看当前服务器Mysql是否在运行,我们会执行 pgrep mysql查看,如果有打印出进程ID说明mysql是正常在运行的。
判断是否存在进程 mysql,存在则正常不存在则说明mysql可能挂了,可以执行重启操作,当然也可以直接发送邮件到指定邮箱。
2,监控apache是否正常运行根据监控mysql的经验,shell脚本:
apache可能不在同一台服务器上,SHELL脚本:
#!/usr/bin/bash
#
if curl -m 10 -G localhost:81 > /dev/null 2>&1
then
echo 'server is running'
else
if ping -c 1 localhost > /dev/null 2>&1
then
echo 'server exception but ip ping success'
fi
fi
原理类似于直接访问URL判断是否有响应,分别判断apache端口和服务器IP。
如果系统访问无响应有可能是apache服务挂了,还有一种可能是服务器挂了,所以用PING 的方式来判断服务器是否正常。
最后一步,就是把以上两个脚本添加到定时任务中去执行:
这样就每分钟都会去判断apache和mysql是否正常运行,基本达到实时监控,如果加上邮件通知的话,只要系统出现故障,一分钟之内就能收到邮件通知。