Crontab 语法规则
语法规则
Crontab规则由五个时间字段和一个命令字段组成,每个字段之间由空格或制表符分隔。
- 分钟(Minute):表示一小时中的哪一分钟执行任务。取值范围为0到59。
- 小时(Hour):表示一天中的哪个小时执行任务。取值范围为0到23。
- 日(Day of the month):表示一个月中的哪一天执行任务。取值范围为1到31。
- 月(Month):表示一年中的哪个月执行任务。取值范围为1到12,也可以使用缩写的月份名称(如Jan, Feb, Mar等)。
- 星期(Day of the week):表示一周中的哪一天执行任务。取值范围为0到7,其中0和7都表示星期日,1表示星期一,依此类推。您还可以使用缩写的星期名称(如Sun, Mon, Tue等)。
- 命令(Command):要执行的命令、脚本或程序。
在这些时间字段中,您可以使用以下特殊字符:
- 星号
(*)
:表示匹配所有可能的值。例如,"*"在分钟字段中表示每分钟。 - 逗号
(,)
:用于指定多个值。例如,"1,3,5"在小时字段中表示1点、3点和5点。 - 连字符
(-)
:用于指定一个范围。例如,"10-15"在分钟字段中表示从10到15分钟。 - 斜杠
(/)
:用于指定一个步长。例如,"*/5
"在分钟字段中表示每隔5分钟。 @
符号:用于指定一些特定的预定义值,如"@reboot
"表示在系统启动时执行任务。
# 每天的凌晨3点执行备份脚本
0 3 * * * /path/to/backup.sh
# 每小时的30分钟执行清理任务
30 * * * * /path/to/cleanup.sh
# 每个月的第一天和第十五天的午夜12点执行任务
0 0 1,15 * * /path/to/job.sh
# 每周一到周五的上午9点执行任务
0 9 * * 1-5 /path/to/task.sh
# 每隔5分钟执行一次脚本:
*/5 * * * * /path/to/script.sh
# 每天的上午9点和下午2点各执行一次备份脚本:
0 9,14 * * * /path/to/backup.sh
# 每周一的凌晨3点执行一次数据库清理脚本:
0 3 * * 1 /path/to/cleanup.sh
# 每天的上午8点到下午6点之间,每隔30分钟执行一次任务:
0,30 8-18 * * * /path/to/task.sh
*/5 * * * * ? #每隔 5 秒执行一次
0 */1 * * * ? #每隔 1 分钟执行一次
0 0 2 1 * ? * #每月 1 日的凌晨 2 点执行一次
0 15 10 ? * #MON-FRI 周一到周五每天上午 10:15 执行
0 15 10 ? 6L #2002-2006 2002 年至 2006 年的每个月的最后一个星期五上午 10:15 执行
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 点都执行一次
0 0 10,14,16 * * ? #每天上午 10 点,下午 2 点,4 点执行一次
0 0/30 9-17 * * ? #朝九晚五工作时间内每半小时执行一次
0 0 12 ? * WED #每个星期三中午 12 点执行一次
0 0 12 * * ? #每天中午 12 点触发
0 15 10 ? * * #每天上午 10:15 触发
0 15 10 * * ? #每天上午 10:15 触发
0 15 10 * * ? * #每天上午 10:15 触发
0 15 10 * * ? #2005 2005 年的每天上午 10:15 触发
0 * 14 * * ? #每天下午 2 点到 2:59 期间的每 1 分钟触发
0 0/5 14 * * ? #每天下午 2 点到 2:55 期间的每 5 分钟触发
0 0/5 14,18 * * ? #每天下午 2 点到 2:55 期间和下午 6 点到 6:55 期间的每 5 分钟触发
0 0-5 14 * * ? #每天下午 2 点到 2:05 期间的每 1 分钟触发
0 10,44 14 ? 3 WED #每年三月的星期三的下午 2:10 和 2:44 触发
0 15 10 ? * MON-FRI #周一至周五的上午 10:15 触发
0 15 10 15 * ? #每月 15 日上午 10:15 触发
0 15 10 L * ? #每月最后一日的上午 10:15 触发
0 15 10 ? * 6L #每月的最后一个星期五上午 10:15 触发
0 15 10 ? * 6L #2002-2005 2002 年至 2005 年的每月的最后一个星期五上午 10:15 触发
0 15 10 ? * 6#3 #每月的第三个星期五上午 10:15 触发
使用
在Linux
通过 crontab -l
查看定时任务
评论区