【原创翻译】Crontab – Quick Reference Crontab的快速教程

原文链接:http://www.adminschoice.com/crontab-quick-reference/   转载请注明译者及原文链接

在Unix和Solaris系统中设置计划任务

cron是一个unix和solaris系统的功能,主要用于通过cron dameon在后台按照一定的时间间隔来自动执行任务。这些任务在unix,solaris中通常被称作cron job。Crontab(CRON TABle)是一个文件,其中包含要运行的计划条目,以及运行的时间和次数。

本文包括了unix cron job如下几个方面的内容:

1,Crontab 限制

2,Crontab命令

3,Crontab文件——语法

4,Crontab实例

5,Crontab环境

6,Disable Email(取消邮件)

7,为cron活动生成日志

1,Crontab限制

如果你的用户名被包含在了/usr/lib/cron/cron.allow中,你就可以执行crontab。如果该文件不存在,只要你的用户名不在/usr/lib/cron.deny中,你也可以使用crontab。

只要cron.deny存在并且为空,所有的用户都可已使用crontab。如果这两个文件都不存在,则只有root用户可以使用crontab。allow/deny文件每行包含一个用户名。

2,Crontab 命令

export EDITOR=vi; 来打开crontab文件。

crontab -e 编辑crontab文件,如果其不存在,则会创建一个

crontab -l   显示crontab文件

crontab -r  删除crontab文件

crontab -v  展示上一次编辑的crontab文件(这个选项只在少数几个系统上可用)

3,Crontab文件

Crontab语法:

crontab文件中用五个字段来指定命令运行的时间间隔,以及天和日期。

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

值域中的*表示所有的合法值。
每一列的值可以是*,也可以是以都好隔开的元素表。一个元素或者是上图所示范围内的一个数字,或者是以连字符隔开的两个数字(指代范围)
注意:
A.)所有的操作系统都不支持重复模式,如:/2表示每两分钟,/10表示每10分钟。
B.)指定运行在具体哪几天可以通过两个字段:month day 和 weekday。如果这两个字段都有了,他们的作用会叠加。

4,Crontab实例
crotab文件中的这一行表示在每天的下午6:30分从/home/someuser/tmp中移除所有临时文件:
30     18     *     *     *         rm /home/someuser/tmp/*
像下面这样改变参数的值将会让命令按照不同的日程运行:
min hour day/month month day/week Execution time
30 0 1 1,6,12 * – 00:30 Hrs  on 1st of Jan, June & Dec.
 
0 20 * 10 1-5 –8.00 PM every weekday (Mon-Fri) only in Oct.
 
0 0 1,10,15 * * – midnight on 1st ,10th & 15th of month
 
5,10 0 10 * 1 – At 12.05,12.10 every Monday & on 10th of every month


注意:若是不小心输入了没有带参数的crontab命令,不要用control-d退出,因为这个命令会删除crontab文件中的所有条目,应该是用Control-c来退出。

5,Crontab环境

在shell中(/usr/bin/sh),cron从用户的HOME目录下调用命令。

cron为每个shell都提供了一个默认环境,定义如下:

HOME=user’s-home-directory
LOGNAME=user’s-login-id
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

想要自己的.profile执行的用户必须明确在crontab条目中或者被条目调用的脚本中指定。

6,取消邮件

默认情况下,cron job被执行时会向用户的账户发送一封邮件。如果想取消这个,可以在cron job的行尾加上:

>/dev/null 2>&1

7,生成日志文件

要得到cron的执行日志,可以这么做:

30 18 * * * rm /home/someuser/tmp/* > /home/someuser/cronlogs/clean_tmp_dir.log

原文地址:https://www.cnblogs.com/andy071001/p/3010037.html