15-定时任务

定时任务

  Linux下定时执行任务(备份执行脚本/命令)


         备份    流量低谷期(人少时)


   分类

          crontab    工作必会    软件包:cronie

          anacron    适用于服务器非7*24小时运行

          atd        一次性的定时任务



      crontab分类

          系统的定时任务

               配置文件   /etc/crontab


               目录        /etc/cron.daily      天   目录下的内容系统定时任务会每天执行

                          /etc/cron.hourly     小时

                          /etc/cron.monthly    月

                           /etc/cron.weekly     周

                        作用:定时检查,防止中毒

                              存放开机自启动


               /var/log/cron  系统定时任务的日志


       定时切割   

              系统定时对系统日志进行切割(日志切割/日志轮询)防止单个日志过大

           完成者:系统定时任务+logroate


                   对应目录,文件/etc/cron.dailly/

                                 /etc/logrotate.d/syslog   




          用户的定时任务          /var/spool/cron/root存放定时任务的文件


                    crontab   -l   查看当前用户的定时任务    list

                              -e   修改当前用户的定时任务    edit

                              -h   查找crontab的帮助

                              -u   指定用户

                              -r   清空定时任务


定时任务格式

      规则    /etc/crontab

            分时日月周    命令/脚本

              *


      特殊符号

            * 每

           /  每隔              */2 * * * *           每隔两分钟

           -  范围              * 9-12 * * *          9点到12点的每分钟

           ,  一个个独立时间    * 9,10,11,12 * * *    九点,十点,十一点,十二点的每分钟

                                 * 21-23,00-03* * *   晚上九点到第二天凌晨三点


       定时任务日志的格式    日志只能显示无法查看对错

            日志  /var/log/cron


 Apr 28 18:43:01 lc01 CROND[27666]: (root) CMD (sh/server/scripts/ip-date.sh >>/tmp/time.log 2>&1 )

 Apr 28 18:44:01 lc01 CROND[27673]: (root) CMD (sh/server/scripts/ip-date.sh >>/tmp/time.log 2>&1 )

Apr 28 18:45:01 lc01 CROND[27681]: (root) CMD (sh/server/scripts/ip-date.sh >>/tmp/time.log 2>&1 )

Apr 28 18:46:01 lc01 CROND[27688]: (root) CMD (sh/server/scripts/ip-date.sh >>/tmp/time.log 2>&1 )

 Apr 28 18:47:01 lc01 CROND[27720]: (root) CMD (sh/server/scripts/ip-date.sh >>/tmp/time.log 2>&1 )

                   时间               root用户的定时任务  CMD           执行的命令或脚本


       检查定时任务是否创建成功

           看文件的内容

           看日志  


   定时任务步骤:

      1命令行测试

      2书写脚本并测试

      3写入定时任务每分钟执行检查

      4写入定时任务根据要求修改时间





/server/scripts/  创建存放脚本目录


           sh  执行脚本     bash

               -x   执行脚本过程(显示加号由多到少表示先后顺序)


     脚本首行  #!/bin/bash



   书写定时任务   坑

      1加注释

      2书写定时任务时尽量使用脚本

      3使用sh执行脚本

      4定时任务中%有特殊含义(相当于回车)需使用撬棍转译  (脚本中没有特殊含义)

      5定时任务中的命令和脚本使用绝对路径

               相对路径指  用户定时任务   在用户家目录下

                           系统定时任务   在根下

      6   原因

               若没追加或重定向输出的信息会到显示到/var/spool/mail/root


          故障

              定时任务没有定向到空或追加到文件的故障

          1   提示 you have new mail

in /var/spool/mail/root

          2          关闭定时任务邮件服务    

                    systemctl stop postfix     临时

                    systemctl disablepostfix  永久

                系统会把没有发送出去的邮件临时放起来

                    /var/spool/postfix/maildrop

                        造成目录下会有大量的小文件占用大量inode  导致inode满了


            >/dev/null 2>/dev/null    正确的信息错误信息定向到黑洞

            >/dev/null 2>&1

            &>/dev/null        

            将输出信息追加到文件



          3定时任务运行脚本时环境变量的问题


                     定时任务运行脚本时只时别/usr/bin和/bin下的命令


                        解决:  写脚本时命令写绝对路径


                        写脚本开头重新设置PATH

                  export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

                             ./etc/profile 

                             source  /etc/profile



          检查定时任务的服务是否运行

                       ps -ef |grep crond

                      systemctl is-active crond



                      定时任务是否开机自启动

                    systemctl status crond

                    systemctl is-enabled crond


                      系统日志服务

                         定时任务由系统rsyslog运行(需检查是否开启)

你可能感兴趣的:(15-定时任务)