背景:
本人博客的评论为 valine 评论,为了及时知道评论,设置了邮件通知。奈何 leancloud 的每天活跃状态为 16 小时,且半小时内无人访问,则自动进入休眠状态。为了解决这一问题,研究了下 linux 系统自带的 crontab 定时器,通过 定时访问评论网站 去解决这一问题。
一、认识 crond 服务基本命令
1>安装 crontab:
yum install crontabs
2>查看 crontab 服务状态:
service crond status
3>手动启动 crontab 服务:
service crond start
4>设置开机自动启动:
//查看是否已经设置为开机启动
ntsysv;
//设置为开机启动
5>常用的命令行
//启动服务
service crond start
//关闭服务
service crond stop
//重启服务
service crond restart
//重新载入配置
service crond reload
//查看crontab服务状态
service crond status
//列出所有的crontab 任务
crontab -l
//编辑定时任务【删除-添加-修改】
crontab -e
//删除定时任务
crontab -r
二、创建一个定时任务
1>列出定时任务
crontab - l; //如果无定时任务
2>新建定时任务
执行如下命令,打开 crontab 定时任务编辑界面,按 I 键进入编辑模式。
crontab - e;
3>添加定时任务
设置上午 9 点到凌晨 1 点,每 30 分钟访问一次网站。关于定时任务表达式不懂的去网上搜下。注意 linux 与 下的 crontab 是有些差异的,搜索的时候应当带上 linux。本人就入坑了。
*/30 0,1,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * /usr/bin/curl https:www.baidu.com
三、定时任务表达式
1>格式
字段名 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 or JAN-DEC , - * /
周几 1-7 or SUN-SAT , - * ? / L C #
年 (可选字段) empty, 1970-2099 , - * /
2>说明
Month
一年中的几月:可以用 0-11 或用字符串 “JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV and DEC” 表示Day-of-Week
每周:数字 1-7(1 = 星期日),或用字符口串“SUN, MON, TUE, WED, THU, FRI and SAT”
* :代表整个时间段
? :表示不确定的值
, :指定数个值
- :指定一个值的范围
/ :指定一个值的增加幅度。n/m表示从n开始,每次增加m
L :用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
W :指定离给定日期最近的工作日(周一到周五)
# :表示该月第几个周X。6#3表示该月第3个周五
3>举例
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 23 * * ? 每天23点执行一次
0 0 1 * * ? 每天凌晨1点执行一次:
0 0 1 1 * ? 每月1号凌晨1点执行一次
0 0 23 L * ? 每月最后一天23点执行一次
0 0 1 ? * L 每周星期天凌晨1点实行一次
0 26,29,33 * * * ? 在26分、29分、33分执行一次
0 0 0,13,18,21 * * ? 每天的0点、13点、18点、21点都执行一次
三、定时任务相关网站推荐
- 设置 cron 定时的网站:https://console.cron-job.org/jobs
- ** 效验表达式的网站:[https://tool.lu/crontab**](https://tool.lu/crontab)