crontab快速指南

【原文】http://www.adminschoice.com/crontab-quick-reference

cron是一个Unix,Solaris的工具,它可以在后台自动执行任务。这些任务在Unix,Solaris中通常被称为“cron jobs”。crontab(CRON TABle)是一个文件,用于设置cron任务的计划。

这篇文档主要包括Unix cron jobs的以下方面:

  1. crontab的限制
  2. crontab命令
  3. crontab文件 - 语言
  4. 例子
  5. 环境变量
  6. 关闭Email
  7. 生成日志

1. crontab的限制

如果 /usr/lib/cron/cron.allow 存在,并且你的用户名在这个文件中,说明你有权执行crontab。

否则,看 /usr/lib/cron/cron.deny 是不是有你的用户名。如果没有,那么你也可以执行crontab。

如果只有 cron.deny 存在,并且它是空,那么所有用户都可以执行crontab。

如果 cron.deny 和 cron.allow 都不存在,那么只有root用户可以执行crontab。

allow/deny文件的每一行表示一个user。

2. crontab命令

可以用 export EDITOR=vi 来指定打开crontab文件的编辑器。

crontab -e        编辑crontab文件,如果不存在就创建一个新的

crontab -l        显示crontab文件

crontab -r       删除crontab文件

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

3. crontab文件

crontab语法:

crontab文件包含5个指定时间、日期的域和一个将被定时执行的命令

        * * * * * 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)

上图中,一个星号(*)即代表一列(一个值域),它的值可以是括号中指定的值。

每一列的值可以是一个星号(*)或者一个以逗号分隔的元素列表。元素可以是一个数字(括号中指定的范围中的数字),也可以是用连字符(-)连接的2个数字,表示一个范围(如,1-4)。

注意

A) crontab不支持重复模式,如果想用 /2 表示每2分钟, /10 表示每10分钟,crontab就会报错。

B) 指定日期有2种方式,每个月中的第几天,或一周中的第几天。如果2个位都被置了,那么两都都会生效。

4. 例子

crontab文件中的一行,如下所示,表示“每天下午6:30,删除 /home/someuser/tmp 下的所有文件”

30 18 * * * rm /home/someuser/tmp/*

日(月)日(周)执行时间
30011,6,12*1月1日,6月1日和12月1日的 00:30 
020*101-510月的每周一至周五,每天晚上8点
001,10,15**每月1日,10日和15日的0点
5,10010*1每周一及每月10日的00:05和00:10
注意:如果不小心执行了不带参数的crontab命令,不要用 CTRL+D 终止,因为这样会删除所有的crontab文件。应该用 CTRL+C 终止。

5. 环境变量

cron执行时,所在路径是用户的HOME目录。

cron提供一些默认的环境变量:

HOME=用户的HOME目录

LOGNAME=用户登录的ID

PATH=/usr/bin:/bin

SHELL=/bin/sh

用户如果想执行.profile必需在脚本中手动执行。

【译注】

A) 上面的环境变量PATH和SHELL,在我的环境中跟原文的不太一样,这里写的是我环境里的值。

B) 我在脚本里手动source .profile也没有用,只能手动设置一些需要的环境变量。

6. 关闭Email

默认情况下,cron jobs发一封邮件给用户。如果不需要,可以在行尾添加 >/dev/null 2>&1

7. 生成日志

下面的命令可以收集脚本中的日志:

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

============================== 分割线 ==============================

第一次做翻译的工作。觉得这篇东西比较简单,尝试一下。感觉翻译得还是比较生硬。主要是读书时,英语翻译的要求是“直译”,再加上中文水平实在有限,生硬是必然的。

今后多多努力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值