美文网首页
2019-07-31定时任务

2019-07-31定时任务

作者: 麟之趾a | 来源:发表于2019-07-31 09:42 被阅读0次

    定时任务

    定时任务实现方法
    1)  定时任务软件 cronie
    2)  定时任务软件atd 只能一天执行一次
    3)  anacron 定时时间有固定的设置,即每小时,每天,每星期,每月
    
    系统默认定时任务
    cron.hourly    系统每小时执行的任务
    cron.daily     系统每天执行的任务
    cron.weekly    系统每周执行的任务
    cron.monthly    系统每月执行的任务
    
    用户自定义设置定时任务
    crontab 系统设置和查看定时任务
    crontab –e 编辑用户定时任务
    crontab –l 列表用户定时任务
    
    定时任务配置文件
    /var/spool/cron/root  root用户设置定时任务的文件
    /var/spool/cron/oldboy oldboy用户设置定时任务的文件
    
    定时任务启动
    systemctl start crond
    systemctl enabled crond
    
    定时任务样例文件
    [root@oldboy63 /var/log]# cat /etc/crontab 
    SHELL=/bin/bash                                         指定SHELL变量
    PATH=/sbin:/bin:/usr/sbin:/usr/bin                      指定PATH路径变量
    MAILTO=root                                             指定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
    分 时 日 月 周
    

    \color{red}{注:日期和星期不能同时使用}

    定时任务的日志文件分析
    [root@oldboy63 /var/log]# head -2 cron
    Jul 28 09:24:01 oldboy63 run-parts(/etc/cron.daily)[115823]: finished logrotate
    Jul 28 09:24:01 oldboy63 run-parts(/etc/cron.daily)[115811]: starting man-db.cron
          01          02           03                               04
    01:定时任务触发时间
    02:主机名
    03:读取什么定时任务文件信息
    04:定时任务做了什么事
    

    \color{blue}{为了加快定时任务执行,可以调整服务器时间 PS:应把服务器时间往后调}

    定时任务书写格式
    分   时   日   月   周
    分钟 0-59 
    小时 0-23
    日期 1-31
    月份 1-12
    周   0-6
    '* 每分钟,或每小时,或每..执行一次
    \n 每隔多长时间执行一次
    -   连续的一个时间范围
    ,   不连续的时间段执行
    
    定时任务编写常见问题
    1)  每隔5分钟进行时间同步
    方法一:使用绝对路径编写
    */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
    方法二:把命令放入脚本中
    #!/bin/bash
    PATH= /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    ntpdate ntp1.aliyun.com
    2)  查看定时任务的环境变量
    * * * * * echo $PATH >/root/path 
    [root@oldboy63 /etc/cron.daily]# cat /root/path 
    /usr/bin:/bin
    3)  查看没有配置PATH路径的脚本环境变量
    * * * * * /bin/sh /root/d.sh &> /dev/null
    [root@oldboy63 ~]# cat d.sh 
    #!/bin/bash
    echo $PATH > /root/path1
    [root@oldboy63 ~]# cat path1
    /usr/bin:/bin
    3.  规范化编写定时任务
      */5 * * * * /usr/bin/ntpdate ntp1.aliyun.com &> /dev/null
    postfix服务开启:如果没有重定向黑洞文件,/var/spool/mail/root.如使用root用户,则这个文件就会变大,当命令执行错误时,导致block块变大
    postfix服务没有开启:如果没有重定向黑洞文件, /var/spool/postfix/maildrop/,如果使用root用户,当命令执行错误时,这个文件就会堆满小文件,导致inode数量过大
    编写时:把无论正确或者错误的信息重定向输出到/dev/null
    4.  将特殊字符使用转义字符\ 如\%
    或者使用脚本方式编写
    
    定时任务编写注意事项
    1. 编写定时任务需要有注释信息
    2. 编写定时任务需要注意环境变量
    3. 编写环境变量需要注意特殊符号
    4. 编写定时任务需要将输出信息定义到空/dev/null
    5. 编写定时任务建议使用脚本编写
    编写定时任务规范

    第一个里程:测试命令是否在命令行中执行成功
    第二个里程:把命令放入定时任务中(绝对路径)
    第三个里程:调整时间,进行测试
    第四个里程:检查信息,检查任务执行结果

    编写定时任务脚本规范

    第一个里程:编写脚本信息
    第二个里程:测试脚本执行情况
    第三个里程:把脚本放入定时任务中(绝对路径)
    第四个里程:调整时间信息
    第五个里程:检查日志信息,查看任务执行结果

    测试环境测试定时任务没有问题,执行脚本将线上服务器做改动

    compress.sh
    #!/bin/bash
    tar xxxxx
    线下服务器
    echo ‘* * * * * * /bin/sh compress.sh’>>/var/spool/cron/root
    

    相关文章

      网友评论

          本文标题:2019-07-31定时任务

          本文链接:https://www.haomeiwen.com/subject/hbiarctx.html