Beaver's Blog

Freedom Openness Inclusion

0%

Cron Jobs

前言

本文不对Cron Jobs的相关命令做具体的介绍,只是想解释一下使用cron作业调度的时间设置。

有时,我们会执行一些经常性、周期性的任务,比如:文件备份、发送通知等。但是每次手动操作又十分的繁琐,一般会使用命令或脚本辅助我们完成这些工作。而在Unix-like操作系统中有作业调度命令,可以实现一些作业的定时调度,将这两者结合起来就自动化定时执行这些任务了。

使用

作业调度的形式一般像是这样:? ? ? ? ? command_to_execute,其完整的表达式是:

{minute} {hour} {day of month} {month} {day of week} command_to_execute

以下是表达式各部分的具体解释:

1
2
3
4
5
6
7
8
9
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command_to_execute

上面的解释中,*代表所有可能的值,比如:分钟的*表示0-59。其中,对于monthweek都可以用英文缩写代替,Week: SUN-SAT代表0-6JAN-DEC代表1-12月。不过,一般习惯用数字表示。

现在讲一下,时间设置中常见的几种类型(以minute为例):

1
2
3
1,5,7  # 表示在1,5,7分钟触发
1-5,8-10 # 表示在1-5,8-10时间段内触发
*/N # 表示每N分钟触发一次,10/5 则表示从10分钟开始,每5分钟触发一次

根据以上解释,现在我们可以写一些作业调度的时间设置了。

1
2
3
4
5
6
# 每10分钟调度一次
*/10 * * * * command_to_execute
# 10月份每周五每小时2分时调度一次
2 * * 10 5 command_to_execute
# 每日5-10,10小时时间段的5分时调度一次
5 5-10,15 * * * command_to_execute

推荐一个网站(crontab guru)可以让你更加直观的理解Cron Jobs调度的时间设置 。

总结

Cron Jobs是一种管理重复性任务的不错的选择,它非常实用,也很容易上手,选择使用正确的命令和时间设置,就可以开启定时执行我们的任务了。

参考文档

[1] Wikipedia: cron