Cron配置定时任务

写在前面

(这段是我自言自语,用来记录工作生活的废话,可以不用看)
最近实验室的项目中需要实现一个定时功能,需要将数据库中每一周的数据做一个统计,生成周报在网站上展示,并提供每周数据的下载,考虑到数据量比较大,若即时统计以及生成下载文件,会严重拖慢网页的访问速度和下载速度。因此,需要提前统计好周报数据以及提取每周数据并生成文件,由于数据每周都会更新,若每周人为地去操作这些将会是一件很繁琐的事情(毕竟我记忆力不好),想偷懒,所以就想着找一个Linux可用的定时器,能够周期性地地运行我写好的用来统计数据和生成文件的代码,于是就让我找到了Cron。

Cron简介

Cron-wiki
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的命令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。
通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

## Crontab文件
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段

语法格式

minute hour day-of-month month day-of-week command

其中:

  • minute: 分钟,范围是0-59
  • hour: 小时,范围是0-23
  • day-of-month: 日期,范围是1-31
  • month: 月份,范围是1-12
  • day-of-week: 星期几,范围0-7(星期天可以使0或7)
  • command: 要执行的命令,或者需要执行的脚本文件的全路径

上述字段中,还可以使用一下特殊字符:

  • 星号(*):代表所有可能的值,若某个字段值为’*‘,则表示在该字段的每一个可能值下都执行该命令;如month为’*’,则在满足其他字段的制约条件下每个月都执行该命令;
  • 逗号(,):用逗号隔开的值指定一个列表的范围,如:”1,2,3”;
  • 短杠(‘-‘): 用于整数之间,表示一个连续的整数范围,如:”1-3”,表示”1,2,3”;
  • 斜杠(‘/‘):指定时间的间隔频率,如:hour字段为”10-22/2”表示10点到22点之间每两小时执行一次;
  • 星号(*)和斜杠(‘/‘)可一起使用,如:minute字段为”*/10”表示每十分钟执行一次。

我需要每周执行一次,于是任务项应该是:

0 0 * * 1 my_command

即:每周的0点0分执行my_command命令

输出配置

若是想要查看运行的情况,可将运行的结果输出到文件中,在每一行的任务项后再加上文件路径和输出内容的类型,例如,我会将运行的结果或错误信息都输出到log文件中:

0 0 * * 1 my_command >/path/of/cron.log 2>&1 &

若不想让其有内容输出,可将文件路径写成/dev/null

:’>’表示重定向,bash中0,1,2三个数字分别代表STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出;”2>&1”则表示将标准错误重定向到标准输出中的,输出到前面的文件里,最后的’&’表示让bash在后台运行。

crontab命令

命令格式

crontab [-u user] [-e | -l | -r]

参数详解

  • -u user: 用来设定某个用户的crontab服务,此参数一般有root用户来运行,若不指定用户,则表示对当前用户的crontab文件进行操作;
  • -e: 编辑某个用户的crontab文件内容;
  • -|: 显示某个用户的crontab文件内容;
  • -r: 从/var/spool/cron目录中删除的crontab文件;

crond服务

包括crond服务启动、停止和重启

系统中可使用service命令

$ service crond start
$ service crond stop
$ service crond restart

crond 也有可能是 cron,如果前者不行,可以试下后者

无法使用service命令

/etc/init.d/cron stop  
/etc/init.d/cron start

参考资料

1.linux中crontab命令启动/重启/停止详解
2.crontab
3.重启crontab服务

文章目录
  1. 1. 写在前面
  2. 2. Cron简介
    1. 2.1. 语法格式
    2. 2.2. 输出配置
  3. 3. crontab命令
    1. 3.1. 命令格式
    2. 3.2. 参数详解
  4. 4. crond服务
    1. 4.1. 系统中可使用service命令
    2. 4.2. 无法使用service命令
  5. 5. 参考资料
,