- 什么是Crontab
- Crontab能用来做什么
- Crontab简单使用
(3)保存后,系统会提示crontab: installing new crontab
(4)执行命令: tail -f /tmp/date.log 就能看到系统每分钟都会打印出时间到date.log这个文件
- 用Crontab+Shell实现实时监控系统
#!/bin/bash
check=`pgrep mysql`
if [ -n "$check" ]; then
exit
else
date=$(date +"%Y-%m-%d %H:%M:%S")
/etc/init.d/mysqld restart
echo 'mysqld exception at' $date 'and restart '
fi
判断是否存在进程 mysql,存在则正常不存在则说明mysql可能挂了,可以执行重启操作,当然你也可以直接发送邮件到指定邮箱。 2.监控apache是否正常运行根据监控mysql的经验,我们可以这样写SHELL脚本:
#!/bin/bash
check=`pgrep httpd`
if [ -n "$check" ]; then
exit
else
date=$(date +"%Y-%m-%d %H:%M:%S")
/etc/init.d/httpd restart
echo 'apache exception at' $date 'and restart '
fi
还有种可能是apache可能不在同一台服务器上,则可以用下面的SHELL脚本实现:
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 的方式来判断服务器是否正常。 最后一步,就是把以上两个脚本添加到定时任务中去执行: crontab -e * * * * * sh /alidata/test/mysqlListener.sh >> /var/log/mysqlL.log
* * * * * sh /alidata/test/httpdListener.sh >> /var/log/httpdL.log 这样就每分钟都会去判断apache和mysql是否正常运行,基本达到实时监控,如果加上邮件通知的话,只要系统出现故障,一分钟之内就能收到邮件通知。
注:如果想设置crontab 定时任务又不想在 crontab l 这样的命令下显示出来, 可以在 /etc/crontab 这个文件里直接写定时任务,这个文件里的定时任务系统会执行, 但是用crontab l 和 crontab e 的命令看不到