crontab - Linux 定时和计划任务

2020/4/8 linux 命令

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

# 语法

usage:  crontab [-u user] file
        crontab [ -u user ] [ -i ] { -e | -l | -r }
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)
1
2
3
4
5
6
7
  • -u user:用来设定指定用户的 crontab 服务;
  • file:file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件并载入 crontab。如果在命令行中没有指定这个文件,crontab 命令将接受标准输入(键盘)上键入的命令,并将它们载入 crontab。
  • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
  • -l:显示某个用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
  • -r:从 /var/spool/cron 目录中删除某个用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
  • -i:在删除用户的 crontab 文件时给确认提示。

# 设置

cron 每分钟检查一次 cron 条目。

cron 命令的格式类似于 V7 标准,带有一个向上兼容扩展的数量。每行有五个时间日期字段,后跟用户名(如果这是系统 crontab 文件),然后是命令。命令由 cron(8)执行,当“分钟”,“小时”和“一年中的月份”字段与当前时间,以及至少两个“天”字段(“月”或“星期几”)匹配当前时间(请参见下面的“注意”)。

请注意,这表示不存在的时间,例如夏令时转换期间的“小时”,将永远不会匹配,导致在“丢失时间”内计划的作业无法运行。同样,发生的时间不止一次(同样,在夏令时转换)将导致运行匹配的作业两次。

时间和日期字段为:

字段 允许值
minute (分钟) 0-59
hour (小时) 0-23
day of month (每月日) 1-31
month (月) 1-12(或姓名,见下文)
day of week (星期几) 0-7(0 或 7 是星期日,或使用名称)

字段可能包含星号(*),该星号始终代表全部。

允许使用数字范围。范围是两个数字,用 - 连字符。 指定的范围包括端值。例如,对于 8-11 “小时”条目指定在第 8、9、10 和 11 小时执行。 第一个数字必须小于或等于第二个数字。

列表是允许的。列表是一组分开的数字(或范围)用逗号分隔。示例:“1,2,5,9”,“0-4,8-​​12”。

步长值可以与范围结合使用。跟随一个带“/<数字>”的范围指定数字值范围。 例如,可以在“小时”字段中使用“0-23/2”来指定每隔一小时执行一次命令(在 V7 标准为 “0,2,4,6,8,10,12,14,16,18,20,22”)。 步长值在星号后也可以使用,因此如果指定要每隔两个小时运行一次,可以使用 “*/2”。

名称也可以用于“月”和“星期几”字段。 用特定日期或月份的前三个字母(大小写不限)。 不允许使用名称范围或名称列表。

If the UID of the owner is 0 (root), the first character of a crontab entry can be "-" character. This will prevent cron from writing a syslog message about the command being executed.

“第六个”字段(该行的其余部分)为将运行命令。 该行的整个命令部分,直到换行符或 "%" 字符,将由 /bin/sh 或指定的 shell 执行在 cronfile 的 SHELL 变量中。"%" 字符命令,除非以反斜杠(\)进行转义,否则将更改为换行符,第一个 "%" 之后的所有数据都将发送到该命令作为标准输入。

# 为注释

Last Updated: 2023-10-29T08:26:04.000Z