crontab 任务调度 文件

crontab-用于计划程序执行的文件

   rontab 是用于安装 Crontab 文件表的程序, 删除或列出用于服务于 cron (8) 守护进程的现有表。每个用户都可以有自己的 crontab,这些文件在 /var/spool/ 目录下。

 

SELinux 在 MLS 模式下, 可以为每个范围定义更多的 crontabs。更多信息, 请见 selinux (8) 

 

描述

   crontab 是用于安装 Crontab 文件表的程序, 删除或列出用于服务于 cron (8) 守护进程的现有表。每个用户都可以有自己的 crontab,这些文件在 /var/spool/ 目录下。

   在这个版本的 Cron 中, 可以在一组主机上使用网络安装的共享/var/spool/Cron, 并指定在任何时候只有一个主机应该在特定目录中运行 crontab 作业,也可以使用 crontab (1) 从这些主机可编辑相同的共享 crontab 文件集, 并设置和查询应运行 crontab 作业的主机。对于不同的用户, 可以允许或禁止运行 cron 作业。 为此, 请使用 cron.allow 和 cron.deny 文件。

  • 如果 cron. allow 文件存在, 则必须在其中列出一个用户, 以便在 cron.allow 文件不存在时使用 crona;
  • 如果cron. deny 文件确实存在, 则用户不能在 cron. deny 文件中列出, 以便使用 cron。
  • 如果这些文件都不存在, 则只允许超级用户使用 cron。

 

   限制访问 cron 的另一种方法是使用 PAM 身份验证 /etc/secu‐rity/access.conf 设置用户, 允许或禁止使用 crontab 或修改系统 cron 作业在 /etc/cron.d/ 目录

可以在环境变量中设置临时目录。 如果未由用户设置, 则使用/tmp 目录

 

   crontab 文件包含 cron (8) 守护进程的指令, 以简化的方式: “时间 日期 运行命令”。 每个用户都可以定义自己的 crontab,在任何的 crontab 中定义的命令都是在拥有特别 crontab。 Uucp 和 News 通常有自己的 crontabs, 不需要显式地运行 su (1) 作为 cron 命令的一部分。

   忽略空行、前导空格和制表符。

  • 第一个非白色空格字符为磅符号 (#) 的行是注释, 不进行处理。 请注意, 不允许在与 cron 命令相同的行上使用注释, 因为它们被视为命令. 同样, 不允许在与环境变量设置相同的行上使用注释。

 

crontab 中的 active 要么是环境设置, 要么是 cron 命令。 环境设置的形式为: name = value

 

当等号 (=) 周围的空白是可选的, 并且任何后面的非前导空白值都是分配给名称的值的一部分。 值字符串可以放在引号中 (单或双, 但匹配) 以保持前导或尾随白色空格。

几个环境变量由 cron (8) 守护进程自动设置。 daemon. SHELL is set to /bin/sh, and LOGNAME and HOME 是从 crontab´s 所有者的 /etc/passwd 行设置。 HOME 和 SHELL 可以被 crontab 中的设置覆盖;LOGNAME 不能。

 

(注意: LOGNAME 变量有时被称为 BSD 系统上的用户, 并且也会自动设置)

 

除了 LOGNAME、HOME 和 SHELL 之外, cron (8) 还会查看 MAILTO 变量, 如果需要在特定 crontab 中运行任何命令时发送邮件。 如果定义了 MAILTO (和非空), 则会将邮件发送到指定的地址。

如果 MAILTO 是定义但为空 (MAILTO = “”), 则不发送邮件,否则邮件将发送到 crontab 的所有者。 如果决定使用 /bin/mail/或 /usr/lib/sendmail 作为邮件, 则此选项非常有用。

 

注意Linux下的任务调度分为两类:系统任务调度和用户任务调度

 

系统任务

系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件
这个就是系统任务调度的配置文件 /etc/crontab文件包括下面几行:

用户任务

用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron 目录中。其文件名与用户名一致,使用者权限文件如下:

crontab 文件格式

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

minute hour day month week command 顺序:分 时 日 月 周

 

时间和日志字段

字段允许的值


field             allowed values
minute             0-59
hour             0-23
day of month             1-31
month             1-12 (or names, see below)
day of wee             0-7 (0 or 7 is Sunday, or use names)

特殊字符

• 星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其他字段的制约条件后每月都执行该命令操作。
• 逗号(,):可以用逗号隔开的值指定一个列表范围,列如,“1,2,5,7,8,9”
• 中杆(-):可以用整数之间的中杆表示一个整数范围,列如 “2-6” 表示 “2,3,4,5,6”
• 正斜线(/):可以用正邪线指定时间的间隔频率,例如 “0-23/2“ 表示每两小时执行一次,同时正斜线可以和星号一起使用,列如 */10,如果用在 minute 字段,表示每十分钟执行一次。

文件格式解析

minute hour day month week command # 注释
* * * * * command 每一分钟执行一次
3,15 * * * * command 每个小时的3和第15分钟执行一次
3,15 8-11 * * * command 在每天上午8-11点时间的第3分钟和15分钟执行
3,15 8-11 */2 * * command 在每隔两天的上午8-11点的第3分钟和第15分钟执行
3,15 8-11 * * 1 command 在每个星期一的上午8-11点的第3分钟和第15分钟执行
45 4 1,10,22 * * command 在每个月的1,10,22日的 4:45分执行
10 1 * * 6,0 command 在每周六、周日的 1:10 分执行 一次
0,30 18-23 * * * command 在每天下午的18-23点的每隔30分执行
0 23 * * 6 command 在每周六晚上的23:00 执行执行一次
* */1 * * * command 每一小时执行一次
* 23-7/1 * * * command 在每天的晚上 23点 到早上的 7点之间,每隔一小时执行
0 11 4 * mon-wed command 在每月的4号和每周一到周三的11点执行一次
0 4 1 jan * command 一月1号的凌晨4点执行
01 * * * * command 每小时的 第一分钟 执行一次
0-10/5 7 * * 1-5 command 每 周一到周五 的 7:0-7:10 分,每隔5分钟执行一次
0 7 * 2-12/2 * command 从2分月到12月份,每隔两个月的 07:00 执行一次

发表评论