zoukankan      html  css  js  c++  java
  • crontab文件【转】

    crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。

    crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

    操作符号

    在一个区域里填写多个数值的方法:

    • 逗号 (',') 分开的值,例如:“1,3,4,7,8”
    • 连词符 ('-') 指定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”
    • 星号 ('*') 代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”,等等

    某些cron程序的扩展版本也支持斜线 ('/') 操作符,用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数。

    时间设置

    # 文件格式说明
    #  ——分钟 (0 - 59)
    # |  ——小时 (0 - 23)
    # | |  ——日   (1 - 31)
    # | | |  ——月   (1 - 12)
    # | | | |  ——星期 (0 - 7)(星期日=0或7)
    # | | | | |
    # * * * * * 被执行的命令

    注:

    1. 在“星期域”(第五个域),0和7都被视为星期日。
    2. 不很直观的用法:如果日期和星期同时被设定,那么其中的一个条件被满足时,指令便会被执行。
    3. 前5个域称之分时日月周,可方便个人记忆。

    从第六个域起,指明要执行的命令。

    AIX系统管理员的Crontab文件

     #=================================================================
     #  SYSTEM ACTIVITY REPORTS
     #  8am-5pm activity reports every 20 mins during weekdays.
     #  activity reports every hour on Saturday and Sunday.
     #  6pm-7am activity reports every hour during weekdays.
     #  summary prepared at 18:05 every weekday.
     #=================================================================
     0,20,40 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &
     0 * * * 0,6 /usr/lib/sa/sa1 &
     0 18-7 * * 1-5 /usr/lib/sa/sa1 &
     5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &

    常见错误

    一个常见的错误是,命令行双引号中使用%时,未加反斜线\,例如:

    # 错误的例子:
    1 2 3 4 5 touch ~/error_`date "+%Y%m%d"`.txt

    在守护进程发出的电子邮件中会见到错误信息:

    /bin/sh: unexpected EOF while looking for `'''''''

    正确的使用方法:

    # 正确的例子:
    1 2 3 4 5 touch ~/right_$(date +\%Y\%m\%d).txt
    
    # 使用单引号也可以解决问题:
    1 2 3 4 5 touch ~/error_$(date '+%Y%m%d').txt
    
    # 使用单引号就不用加反斜线了。这个例子会产生这样一个文件 ~/error_\2006\04\03.txt
    1 2 3 4 5 touch ~/error_$(date '+\%Y\%m\%d').txt
     

    下例是另一个常见错误:

    # Prepare for the daylight savings time shift
    59 1 1-7 4 0 /root/shift_my_times.sh

    初看似要在四月的第一个星期日早晨1时59分运行shift_my_times.sh,但是这样设置不对。

    与其他域不同,第三和第五个域之间执行的是“或”操作。所以这个程序会在4月1日至7日以及4月余下的每一个星期日执行。

    这个例子可以重写如下:

    # Prepare for the daylight savings time shift
    59 1 1-7 4 * test `date +\%w` = 0 && /root/shift_my_times.sh

    另一个常见错误是对分钟设置的误用。下例欲一个程两个小时运行一次:

    # adds date to a log file
    * 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log

    而上述设置会使该程序在偶数小时内的每一分钟执行一次。正确的设置是:

    # runs the date command every even hour at the top of the hour
    0 0,2,4,6,8,10,12,14,16,18,20,22 * * * date >> /var/log/date.log
    # an even better way
    0 */2 * * * date >> /var/log/date.log

    不发送电子邮件

    如果输出结果来自crontab里的命令,那么cron守护进程会用电子邮件将它发给用户。

    若想关闭某个命令的输出结果,可以将输出结果重定向至/dev/null

    >/dev/null 2>&1

    在常用的Vixie cron中,也可以在文件的开始部分加入命令来关闭所有命令的邮件输出:

    MAILTO=""
  • 相关阅读:
    jQuery插件实践之轮播练习(二)
    jQuery插件实践之轮播练习(一)
    AngularJS+Node.js+socket.io 开发在线聊天室
    Ubuntu上部署Ghost博客
    综合架构的简述
    进程
    路由配置
    计算机专用英语词汇1695个词汇表
    Linux打包压缩解压工具
    磁盘知识体系结构
  • 原文地址:https://www.cnblogs.com/eastson/p/2554358.html
Copyright © 2011-2022 走看看