一、前言
在公司项目上日志输出看到了定时任务,之前在学习Linux的时候有过了解定时任务,但是不太深入,这里再来学习一波,同时做个笔记。
定时任务:字面意思就是在某个时间所处理的任务。这个可以通过设置让其自动化的完成,不需要人工来实现,极大的方便了日常工作。比如数据库文件在每天凌晨的时候备份一份,难不成还需要大半夜的爬起来来手动备份吗,定时任务解决了这一难题。
crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。可以满足周期性执行任务的需求
二、cron基本介绍
2.1 cron表达式格式
corn表达式格式为七个域,如:
秒 分 时 日 月 周 年
每一个域之间空格隔开,不指定“年”域时,年域可省略不写,如:
秒 分 时 日 月 周
2.2 cron表达式七个域列表
ps:在周这一域中,7代表周六、1表示周天
2.3 符号使用说明
1、所有域均可用“,”,“-”,“”,“/”
【1】, x,y表示x和y
【2】- x-y表示x到y
【3】 表示每TIME
【4】/ x/y表示从x起,每隔y
2、“日”域另有“?”,“L”,“W”,“C”
【1】? 表示不指定“日”域的值。规则是指定“周”域,则“日”域必须为“?”。反之,指定“日”域,则“周”域必须为“?”。如0 0 12 ? * MON 或 0 0 12 1 * ?
【2】L 2种写法。一,表示月末几天,如2L, 表示月末的2天。二,表示月末倒数第几天,如L-3,表示月末倒数第3天。
【3】W 表示临近某日的工作日,如15W,表示最接近15号的工作日,可能是15号(刚好是工作日)、15号前(刚好周六)或15号后(刚好周日)。
【4】C 表示和Calendar计划关联的值,如1C表示,1日或1日后包括Carlendar的第一天。
【5】LW L和W的组合,只能出现在"日"域中。表示某月最后一个工作日,不一定是周五(详细见结尾PS)。
3、“周”域另有“?”,“L”,“#”,“C”
【1】? 表示不指定“周”域。规则是指定“日”域值,则“周”域值必须为“?”。反之,指定“周”域值,则“日”域值必须为“?”。如0 0 12 1 * ? 或 0 0 12 ? * MON
【2】L 表示某月的最后一个周几,如1L, 表示某月的最后一个周日(1表示周日),7L,表示某月的最后一个周六(7表示周六)。
【3】# 只能出现在"周"域中,表示第几个周几,x#y,y表示第几个,x表示周的值,如6#2,表示第2个周五(6表示周五)。
【4】C 表示和Calendar计划关联的值,如1C表示,周日或周日后包括Carlendar的第一天。
####注意####
“日域”域中,L和W组合为“LW”时,网上有很多种定义,比如:
说法一:LW表示某月的最后一个工作日
说法二:LW某月最后一周的最后一个工作日,即周五
三】示例
本文参考学习至 https://blog.csdn.net/qq_35860138/article/details/82738215