• crontab 执行周期性的定时任务


    crontab(cron table)命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。

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

    crontab [-u user] [-l | -r | -e] [-i]
    
    -l:列出当前用户的计划任务。
    -e:编辑当前用户的计划任务。
    -r:删除当前用户的所有计划任务。即删除/var/spool/cron/USERNAME文件。
    -u:管理指定用户的计划任务,仅root有权限。
    -i:在使用-r选项删除所有任务时提示用户确认。
    




    crontab的语法

    crontab分为两类,系统crontab 和 用户crontab。



    1、系统cron任务

    系统的crontab存放在 /etc/crontab
    
    # vim /etc/crontab
    
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    
    a、每一行定义一个周期性任务,共7个字段。
    b、此处的环境变量不同于用户登录后获得的环境,因此建议命令使用绝对路径。
    c、执行结果会发送邮件给mailto指定的用户。
    



    2、用户cron任务

    用户的crontab文件存放在 /var/spool/cron/USERNAME
    
    # crontab -e -u USERNAME
    
    a、每一行定义一个周期性任务,共6个字段。
    b、此处的环境变量不同于用户登录后获得的环境,因此建议命令使用绝对路径。
    c、执行结果会发送邮件给当前用户。
    




     
    crontab格式说明
    星号(*)匹配所有有效的值。
    短横线(-)表示范围连续取值。
    逗号(,)表示离散取值。
    正斜线(/)指定间隔频率。例如,0-59/2 在分钟字段表示每两分钟。
      
    指定的时间点不能被步长整除时,其意义将不存在。例如 */7 * * * *
    
    注意:%在crontab中被认为是newline,使用时需要用  转义。比如crontab文件中,如果有 "date +%Y%m%d",必须替换为:"date +\%Y\%m\%d"。
    
    注意:crontab的最小时间单位为”分钟“,想完成”秒“级任务,得需要借助于其它方式。
    
    解决方案:
    先定义为每分钟任务,再利用脚本实现在每分钟之内,循环执行多次。
    
    sleep命令
    delay for a specified amount of time.
    s: 秒,默认单位
    m: 分
    h: 小时
    d: 天
    
    usleep命令
    sleep some number of microseconds.The default is 1.
    # usleep 1000000 休眠1秒
    



    输入crontab -e命令,即可编辑当前用户的定时任务列表;

    示例:

    */5 * * * *         每5分钟执行一次
    3 * * * *           每小时的第3分钟执行一次
    3 4 * * 5           每周5的4点3分执行一次
    5 6 7 * *           每月的7号的6点5分执行一次
    7 8 9 10 *          每年的10月9号8点7分执行一次
    9 8 * * 3,7         每周3和周日的8点9分
    0 8,20 * * 3,7      每周3和周日的8点和20点执行一次
    0 9-18 * * 1-5      周一到周五的9-18点,即工作时间内的每小时
    0 7 25 12 *         每年的12月25号7点执行一次
    




    其他操作

    service crond start    //启动服务
    service crond stop     //关闭服务
    service crond restart  //重启服务
    service crond reload   //重新载入配置
    service crond status   //查看服务状态 
    
    查看所有用户的crontab:
    for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done  
    
    查看cron的日志:
    tail -50f /var/log/cron 




  • 相关阅读:
    (补充)移除动态添加的控件
    (非技术)遇见讨饭者的思考
    datalist或datagrid的数据源是数组的时候怎么写绑定?
    (原创)一步一步学Remoting之二:激活模式
    一步一步学Remoting系列文章
    如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证(续)
    (原创)一步一步学Remoting之六:事件(2)
    (原创)一步一步学Remoting之五:异步操作
    【收藏】根据拼音首字母筛选人名
    (原创)一步一步学Remoting之四:承载方式(1)
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15261101.html
Copyright © 2020-2023  润新知