crontab 配置

用户定时任务配置文件 存放于 /var/spool/cron 目录下,以用户名命名。crontab 命令其实就是通过操作这些配置文件,实现对 定时任务 的管理。

注解

注意,用户定时任务配置文件目录可能因系统而异。在 Ubuntu ,该目录是 /var/spool/cron/crontabs

格式详解

想要掌握定时任务配置,全面了解 crontab 配置文件格式是必须的。

一个典型的 crontab 用户配置如下:

  1. # Edit this file to introduce tasks to be run by cron.
  2. #
  3. # Each task to run has to be defined through a single line
  4. # indicating with different fields when the task will be run
  5. # and what command to run for the task
  6. #
  7. # To define the time you can provide concrete values for
  8. # minute (m), hour (h), day of month (dom), month (mon),
  9. # and day of week (dow) or use '*' in these fields (for 'any').#
  10. # Notice that tasks will be started based on the cron's system
  11. # daemon's notion of time and timezones.
  12. #
  13. # Output of the crontab jobs (including errors) is sent through
  14. # email to the user the crontab file belongs to (unless redirected).
  15. #
  16. # For example, you can run a backup of all your user accounts
  17. # at 5 a.m every week with:
  18. # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
  19. #
  20. # For more information see the manual pages of crontab(5) and cron(8)
  21. #
  22. # m h dom mon dow command
  23. * * * * * /usr/local/gse/agent/bin/gsectl watch

井号 ( # )开头的行是 注释 。可以看到,例子中大部分内容都是注释。仔细看注释,原来是在说明如何编写 crontab 配置呢!

crontab 配置中,一个有效的配置行便定义一个定时任务。每个配置行由 6 个字段组成,描述定时任务的执行要素:

  • 0-59
  • 0-23
  • 1-31
  • 1-12
  • 星期0-7 ( 07 均表示星期天 )
  • 执行命令配置字段分成两类,定义运行时间的 时间字段 (前 5 个字段均是)以及 命令字段

时间字段定义执行时间,以字段 为例:

  • 0 ,表示第 0 分钟执行;
  • 0,30 表示第 0 分以及第 30 分钟执行;
  • */5 ,表示每个整 5 分钟执行,即第 051015 ,以此类推;
  • * ,表示每分钟执行;
  • 0-30 ,表示 0-30 分钟,每分钟执行以此;

命令字段 是定时任务执行的命令定义,只要是一行合法的 shell 命令即可。

配置实例

每分钟执行脚本:

  1. * * * * * /path/to/my/script

每小时第 3 和第 15 分钟执行脚本:

  1. 3,15 * * * * /path/to/my/script

上午 8 时到 11 时的第 315 分钟执行脚本:

  1. 3,15 8-11 * * * /path/to/my/script

每隔两天上午 8 时到 11 时的第 315 分钟执行脚本:

  1. 3,15 8-11 */2 * * /path/to/my/script

每周一上午 8 时到 11 时的第 315 分钟执行脚本:

  1. 3,15 8-11 * * 1 /path/to/my/script

每晚 21:30 执行脚本:

  1. 30 21 * * * /path/to/my/script

每月 11022 日的 4:45 执行脚本:

  1. 45 4 1,10,22 * * /path/to/my/script

每周六、周日的 1:10 执行脚本:

  1. 10 1 * * 6,0 /path/to/my/script

每天 18 时到 23 时之间,每隔 30 分钟执行脚本:

  1. 0,30 18-23 * * * /path/to/my/script

每周六 23 时执行脚本:

  1. 0 23 * * 6 /path/to/my/script

下一步

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../../../_images/wechat-mp-qrcode.png小菜学编程

微信打赏