在类似Unix的操作系统上,crontab命令打开cron表进行编辑。cron表是计划在系统上按固定时间间隔运行的任务的列表。 读取crontab并在适当的时间执行命令的守护程序称为cron。它以希腊时间之神Kronos的名字命名。 本文档介绍crontab的GNU / Linux版本。
查看英文版
1 crontab 运行系统环境
2 crontab 语法
3 crontab 例子
Linux
crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
file | 从指定文件加载crontab数据。如果file为破折号(“ - ”),则从标准输入读取crontab数据。 |
-u user | 指定要查看或修改其crontab的用户。如果未提供此选项,则crontab将打开运行crontab的用户的crontab。注意:使用su切换用户可能会混淆crontab,因此,如果在su内部运行它,请始终使用-u选项以避免产生歧义。 |
-l | 显示当前的crontab。 |
-r | 删除当前的crontab。 |
-e | 使用环境变量VISUAL或EDITOR中指定的编辑器编辑当前crontab 。 |
-i | 与-r相同,但是在删除crontab之前会向用户提供是/否确认提示。 |
-s | 仅限SELinux:在进行编辑或替换之前,将当前SELinux安全上下文字符串作为MLS_LEVEL设置附加到crontab文件中。有关详细信息,请参见SELinux文档。 |
所述的crontab命令用于查看或编辑指令的表,以通过运行cron的。
系统上的每个用户都可以拥有一个个人crontab。
Crontab文件位于/ var / spool /(或子目录,如/ var / spool / cron / crontabs)中,但不能直接对其进行编辑。而是通过运行crontab对其进行编辑。
crontab文件中的每个cron命令条目都有五个时间和日期字段(紧随其后的是用户名,仅当它是系统crontab文件时),然后是命令。
当分钟,小时和月字段与当前时间匹配,并且两天字段中的至少一个(月日或星期几)与当前日期匹配时,命令由cron执行。
cron守护进程检查crontab中每分钟一次。
注意无用时间,例如夏令时“春季向前”期间的“缺勤时间”,将永远不会匹配。这将导致在“丢失时间”内计划的作业在这些时间段内无法运行。出于同样的原因,夏令时(秋季)中多次发生的时间将导致匹配的作业运行两次。
领域 | 允许值 |
---|---|
分钟 | 0-59 |
小时 | 0-23 |
一个月中的某天 | 1-31 |
月 | 1-12 (或名称;见下例) |
星期几 | 0-7 (0或7是星期日,或使用的名称;见下文) |
这些字段中的任何一个都可以设置为星号(*),代表“第一到最后”。例如,要每月运行一份工作,请在“ 月”字段中输入*。
允许使用数字范围。范围是用连字符分隔的两个数字。指定的范围包括端值;例如,“小时”条目的8-11指定在8、9、10和11小时执行。
列表是允许的。列表是一组用逗号分隔的数字(或范围)。例如:“ 1,2,5,9 ”,“ 0-4,8-12 ”。
步长值可以与范围结合使用。例如,“ 小时”字段中的“ 0-23 / 2 ” 表示“每隔一小时”。星号后还允许执行步骤,因此,如果您想说“每两个小时”,则可以使用“ * / 2 ”。
名称也可以用于“月”和“星期几”字段。使用特定日期或月份的前三个字母(大小写无关)。不允许使用名称的范围或列表。
“第六个”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或% 字符,将由/ bin / sh或cronfile的SHELL变量中指定的shell执行。除非使用反斜杠(\)进行转义,否则命令中的百分号(%)将被更改为换行符,并且第一个%之后的所有数据将作为标准输入发送到命令。
请注意,命令的执行日期可以由两个字段指定:月份的日期和星期几。如果两个字段都受限制(换句话说,它们不是*),则当任何一个字段与当前时间匹配时,将运行该命令。例如,“ 30 4 1,15 * 5 ”将导致一个命令在每月的1号和15号以及每个星期五的4:30 AM运行。
crontab文件的每一行都是“活动”或“非活动”。“活动”行是环境设置或cron命令条目。“无效”行将被忽略,包括注释。
空行以及前导空格和制表符将被忽略。第一个非空格字符为井号(#)的行被解释为注释,并被忽略。注释与cron命令不在同一行,因为它们将被解释为命令的一部分。出于相同的原因,注释不能与环境变量设置放在同一行。
crontab中的环境设置行可以在cron运行作业时设置环境变量。
并非每个系统的crontab都可以包含环境设置。在Ubuntu和Debian以及使用GNU mcron的系统上,可以在crontab中进行环境设置。在其他系统上,例如Arch Linux和Fedora,不允许在crontab中进行环境设置。查看您的发行版的cron文档以获取更多信息。
crontab中的环境设置的格式为:
name = value
围绕等号(空格=)是可选的,并且在任何后续非前导空格值将被分配给值的一部分名称。可以将值字符串放在引号中(单引号或双引号,但匹配),以保留前导或尾随的空格。
一些环境变量是由cron自动设置的:
如文件/etc/cron.allow和/etc/cron.deny所定义,可以为单个用户允许或禁止Cron作业。如果cron.allow存在,则必须在其中列出用户才能使用给定命令。如果cron.allow文件不存在,但cron.deny文件存在,则不得在此处列出用户使用给定命令。如果这两个文件都不存在,则仅超级用户可以使用给定命令。
也可以使用PAM(可插入身份验证模块)身份验证来定义Cron权限,以设置可能使用或不使用crontab和系统cron作业的用户。PAM配置位于/etc/cron.d/中。
可以在下面列出的环境变量中设置cron作业的临时目录。如果未定义这些变量,则使用默认的临时目录/ tmp。
文件 | 描述 |
---|---|
/etc/cron.allow | 如果存在此文件,则必须在此文件中列出用户才能运行cron作业。 |
/etc/cron.deny | 如果该文件存在,用户必须不被此文件中列出要能够运行cron作业。 |
如果两个配置文件都不存在,则只有超级用户可以运行cron作业。
查看英文版
crontab -e
编辑您的crontab。
crontab -l
显示(“列表”)crontab的内容。
crontab -r
删除您的crontab,以有效地取消调度所有crontab作业。
sudo crontab -u charles -e
编辑名为charles的用户的crontab 。该-u选项需要管理员权限,所以使用执行命令sudo的。
sudo crontab -l -u jeff
查看用户jeff的crontab 。
sudo crontab -r -u sandy
删除用户sandy的crontab 。
以下是crontab中可能包含的条目示例。
在1月2日上午6:15 运行shell脚本/home/melissa/backup.sh:
15 6 2 1 * /home/melissa/backup.sh
可以按名称(星期一)或缩写(一月)列出天和月。数字开头的零是有效的,这可以帮助您直观地排列多个条目。
例如,下一个示例在一月的每个星期一的凌晨12:01运行与上面相同的脚本:
01 00 * Jan Monday /home/melissa/backup.sh
运行/home/carl/hourly-archive.sh(每隔一小时,在小时,从上午9时09:00〜6 PM()18:00),每天:
00 09-18 * * * /home/carl/hourly-archive.sh
与上述相同,但每二十分钟运行一次:
*/20 09-18 * * * /home/carl/hourly-archive.sh
每个星期一的上午9点和下午6点运行/home/wendy/script.sh:
0 9,18 * * Mon /home/wendy/script.sh
每个工作日晚上10:30 运行/ usr / local / bin / backup:
30 22 * * Mon,Tue,Wed,Thu,Fri /usr/local/bin/backup
查看英文版
cut | cu | csplit | cpio | continue | compress | col | cmp | cksum | chsh | chroot | chkey | cd | chmod | cp | comm | chown | cal | calendar | clear | chfn | cancel | cat | cc | cfdisk | checkeq | checknr | chgrp |
未知的网友