zoukankan      html  css  js  c++  java
  • crontab定时任务配置记录

    一、前言

      今天简单记录下crontab的配置

    二、crontab目录 

    /etc/crontab 文件
        这是系统运行的调度任务
     
    /var/spool/cron 目录
        用户自定义的crontab任务放在此目录下
     
    ls –lrt /etc/cron*
       /etc/cron.deny     表示不能使用crontab命令的用户
       /etc/cron.allow     表示能使用crontab命令的用户
       默认情况下,cron.allow不存在,如果都存在,cron.allow优先

    三、crontab命令语法

    具体可 crontab --help 或者 man crontab|more
    
    crontab –l   //查看当前用户的定时任务 
    crontab –e  //编辑当前用户的定时任务
    crontab –r  //删除当前用户的定时任务

    四、crontab任务格式

    59 23 * * *  /home/xxx/crontab/test.sh > /dev/null  2>&1 &
    
    前6列暂且用C1 - C6表示
    
    C1 分    (1-59,0表示整点)
    C2 时    (1-23,0表示子夜)
    C3 日    (1-31)
    C4 月    (1-12)
    C5 星期   (0-6,0表示星期天,1表示星期一,以此类推)
    C6 要运行的命令
    
    前5列表示 命令执行的频率,最小频率是每分钟一次,其中Cn的值可用四种形式表示:
    *  ,  */n  , T1-T2 , a,b,c  
    
    当C1 为 * 时,表示每分钟都要执行命令
    当C1 为 */n时,表示每隔n分钟执行一次命令
    当C1 为 T1-T2时,表示从 T1分钟 到 T2分钟时间内都要执行命令
    当C1 为 a,b,c 时,表示第 a,b,c 分钟都要执行命令
    
    
    示例调用:
    
    12  12 * * *  /home/xxx/crontab/test.sh >/dev/null 2>&1 
    表示每天的12点12分 执行脚本
    
    */2 *  *  *  *  /home/xxx/crontab/test.sh >/dev/null 2>&1
    表示每隔2分钟 执行一次脚本
    
    0 23 * * 1-5  /home/xxx/crontab/test.sh >/dev/null 2>&1
    表示每周一到周五的23点 执行一次脚本
    
    0 19 * * 0  mail -s "xxx" xxx@mail.com < /tmp/maildata
    表示每周日的19点 发送邮件到 xxx@mail.com

    五、关于命令的说明

    关于命令中 /dev/null 2>&1 的解释
    
    0  表示键盘输入
    1  表示标准输出
    2  表示错误输出
    
    1.创建test.sh,内容如下
    
    #! /bin/bash
    echo "time is " `date`
    
    2.添加定时任务
    
    * * * * *    /home/xxx/crontab/test.sh > /home/xxx/crontab/test.log &    默认是1,和下面方法一致
    * * * * *   /home/xxx/crontab/test.sh 1> /home/xxx/crontab/test.log &
    * * * * *   /home/xxx/crontab/test.sh > /home/xxx/crontab/test.log  2>&1 &
    
    3.说明
    
    1代表,标准输出,所以上述命令会将脚本的输出结果,输出到后面指定的log文件中,而不是打印到屏幕;
    2代表,错误输出,&1表示文件的描述,这里表示脚本执行的错误信息重定向到1(标准输出)
    而1已经重定向到指定的log文件中,所以信息都会输出到log文件
    不能写成 2>1 ,缺少&,会认为是错误信息输出到名称为 1 文件中

    六、注意事项

    1.shell中需设置必要的环境变量
      crontab的环境变量默认不包含系统当前用户的环境,所以需添加必要的环境变量
    
    2.尽量采用完整路径方法,避免使用相对路径
    
    3.避免脚本的重复执行
      if(exec("ps -ef |grep 'php'|grep 'updateScript'|grep -v 'grep' |wc -l ") > 2){
        die();  
      }
    
      grep -v 'grep'    表示结果去过滤掉 grep 那一行
      wc -l             表示统计满足条件的行数
      这样就可以判断 php进程中,名为 updateScript 的脚本 是否已经执行了
    

    七、参考资料

    http://www.cnblogs.com/kerrycode/p/3238346.html
    http://www.cnblogs.com/hazir/p/sudo_command.html

     

  • 相关阅读:
    SpringBoot集成Mybatis
    springboot通过slf4j配置日志
    SpringBoot导入jsp依赖始终报错
    shiro小记
    阿里开发手册华山版——(编程规约篇)记录目前自己不合理的地方
    [网络流24题] 2. 太空飞行计划问题 解题报告
    LOJ 6089 小 Y 的背包计数问题 解题报告 (动态规划)
    UVA 10599 Blocks 解题报告 (动态规划)
    Comet OJ#12E Ternary String Counting 解题报告
    [WC2016]挑战NPC 解题报告
  • 原文地址:https://www.cnblogs.com/fanfan259/p/4736076.html
Copyright © 2011-2022 走看看