CRONTAB(计划任务)

2017-05-22  本文已影响15人  銭兎孑
被周期性执行的任务我们称为cron  job
周期性执行的任务列表我们称为 cron table

          安装并检查 Crontab服务
检查cron 服务
    检查Crontab工具是否安装 crontab -l
    检查Crond 服务是否启动 service crond status
    /bin/systemctl start crond.service 启动

安装cron 
    yum install vixie-cron
    yum install crontabs

crontab -e 
  */1 * * * * date>>/tmp/log.txt 设定一个一分钟写入一次的定时任务
 
tail -f /tmp/log.txt 查看文件 持续监听文件变化

              Crontab 配置文件格式
   
    *   *    *   *   *   COMMAND
    |    |    |    |   |    
    |    |    |    |   --   星期 0-7 (0或7表示星期天)
    |    |    |    ------  月份 1-12
    |    |    ----------  日期 1-31  
    |    --------------  小时 0-23
    ------------------  分钟 0-59
  
    例:
      每晚21:30 重启apache
        30 21 * * * service httpd restart
      
      每月1、10、21日的4:45重启apache
        45 4 1,10,21 * * service httpd restart
      
      每月 1到10日的4:45 重启 apache 
        45 4 1-10 * * service httpd restart
      
      每隔2分钟重启apache
        (偶数)  */2 * * * * service httpd restart
        (基数)  1-59/2 * * * * service httpd restart
      
      晚上11点到早上7点之间,每隔一小时重启apache
        0 23-7/1 * * * service httpd restart
      
      每天18:00 至 23:00 之间每隔30分钟重启apache
        0,30 18-23 * * * service httpd restart
        0-59/30 18-23 * * * service httpd restart

    小结:
         * 代表任何时候都匹配
         可以使用“A,B,C”表示A或者B或者C时执行命令
         可以用“A-B”表示A到B之间执行命令
         可以用“*/A” 表示A分钟(小时等)执行一次命令

      crontab -e 修改当前用户的计划任务(创建)
      crontab -e -u cdd 修改某用户的计划任务(创建)
      crontab -l 查看当前用户的计划任务列表
      crontab -lu cdd 查看某用户的计划任务列表

      tail -f /var/log/cron 查看计划任务执行过程

                  Crontab配置文件
       
    /etc/crontab     全局(系统) 配置文件
   crontab - e = vi /var/spool/cron/用户名

在/etc/cron.d/ 下编写定时任务,会正常执行,但是查看用户时,无法查看到这条记录

                  Crontab的日志
    /var/log/cron  文件保存这cron的任务执行记录
    /var/spool/mail/root 下保存着执行任务的记录

                  Crontab常见错误
     1. 环境变量
      在~下.bash_profile 中设置的环境变量不能再计划任务中生效
     2. 第三个和第五个域之间执行的是“或”操作
          例:四月的第一个星期日早晨1时59分运行a.sh
          59 1 1-7 4 0 /root/a.sh   (错误例子)
          57 1 1-7 4 * test `date+\%w` -eq 0 && /root/a.sh
          date + %w 当前周几
          test `date+\%w` 把周几的执行结果存入test
         && 左侧执行正确右侧才执行
      3. 命令行中双引号中使用%时,未加反斜线\

      4. 分钟设置错误
          两个小时执行一次
        * 0,2,4,6,8,10,12,14,16,18,20,22 * * * date (错误例子)
        0 */2 * * * date 
   
   echo $? 输出上次执行结果 0成功  1失败
  
      半分钟执行一次
      */1 * * * * date>> tmp/date.log
      */1 * * * * sleep30;date>> tmp/date.log
      
上一篇 下一篇

猜你喜欢

热点阅读