1.首先写好服务检测脚本,本人简单脚本示例如下:
#!/bin/bash
function httpRequest()
{
info=`curl -s -m 10 --connect-timeout 10 -I $1`
code=`echo $info|grep "HTTP"|awk '{print $2}'`
ttime=`date +"%Y-%m-%d %H:%M:%S"`
if [ "$code" == "200" ];then
echo "$ttime $1 请求成功,响应码是$code"
else
echo "$ttime $1 请求失败!!! 响应码是$code"
echo `curl 'https://test.com/robot/' -H 'Content-Type: application/json' -d '{"msgtype": "text","text": {"content": "$i 服务无响应!"}}'`
fi
}
urlList=("http://abc/" "http://bcd/")
for url in ${urlList[@]};
do
httpRequest $url
done
2.安装crontab
yum -y install crontabs
使用chkconfig crond on或者编辑/etc/rc.d/rc.local添加开机启动
启动crontab:service crond start
3.设置crontab定时任务
两种方式
(1)crontab -e 然后添加相应的任务,编辑方式同vim
(2)编辑/etc/crontab
命令格式
Minute Hour Day Month DayofWeek User CommandPath
Minute:每个小时的第几分钟执行该任务;取值范围0-59
Hour:每天的第几个小时执行该任务;取值范围0-23
Day:每月的第几天执行该任务;取值范围1-31
Month:每年的第几个月执行该任务;取值范围1-12
DayOfWeek:每周的第几天执行该任务;取值范围0-6,0表示星期天
User: 命令是属于哪个用户
CommandPath:指定要执行的程序路径
时间格式
* :表示任意的时刻;如小时位 * 则表示每个小时
n :表示特定的时刻;如小时位 5 就表示5时
n,m :表示特定的几个时刻;如小时位 1,10 就表示1时和10时
n-m :表示一个时间段;如小时位 1-5 就表示1到5点
*/n : 表示每隔多少个时间单位执行一次;如小时位 */1 就表示每隔1个小时执行一次命令,也可以写成 1-23/1
例如:root用户每隔5分钟执行一次脚本,并输出日志到/tmp/serverCheck.log
*/5 * * * * root /opt/software/shellscripts/serverCheck.sh >>/tmp/serverCheck.log 2>&1
4.重新读取crontab配置
service crond reload
5.查看crondtab是否执行
查看日志:/var/log/cron
如果是通过crontab -e添加的任务,则crontab -l也可列出该用户的计时器设置
crontab其它命令参数
-r 删除该用户的计时器设置
-u <用户名称> 指定要设定计时器的用户名称
参考:
https://blog.csdn.net/d1240673769/article/details/81451922
https://blog.csdn.net/qq_33468857/article/details/81836108