操作系统定时任务

一.定时任务作用说明

  1.类似生活中使用的闹钟

  2.可以自动完成操作命令

  3.定时备份系统数据信息

二.定时任务软件种类

  1.定时任务软件  cronie  ******

      默认系统自带定时服务 crond(crontab---定时任务命令)

  2.定时任务软件  atd

      定时任务只执行一次,一次性定时服务

  3.定时任务软件  anacron

      非 7*24 小时运行的服务器

  4.回顾知识点:如何检查软件是否安装

    rpm  -qa  软件名      查看系统中是否有指定的软件大礼包

    rpm  -ql   软件名      查看软件大礼包中都有那些数据信息

    rpm  -qf  'which  命令'    查看一个命令文件属于哪个软件大礼包

      

     rpm  -ivh  软件包.rpm    利用rpm安装软件大礼包

      -i  install(安装)

      -v  显示安装过程

      -h  human(易读方式)

    yum  install  -y  软件大礼包

    yum  provides  命令  查询命令属于哪个软件大礼包

      

   5.补充说明:如何让linux和windows主机之间传输数据  命令rz和sz

    

      查看命令属于哪个软件大礼包  rzsz属于lrzsz这个软件大礼包

    

     系统中没有rz这个命令,查看lrzsz软件大礼包是否安装,经查未安装,利用yum命令进行安装

     rz  -y     从windows上下载数据linux

      

    sz  -y     从linux上上传数据到windows 

      

三.定时任务实现方式

  1.系统定时任务--系统特殊目录

    01.系统定时任务周期:每小时(系统自动运行里面的内容)

      控制定时任务目录:  /etc/cron.hourly

    02.系统定时任务周期:每一天(系统自动运行里面的内容)

      控制定时任务目录:  /etc/cron.daily

    03.系统定时任务周期:每一周(系统自动运行里面的内容)

      控制定时任务目录:  /etc/cron.weekly

    04.系统定时任务周期:每个月(系统自动运行里面的内容)

      控制定时任务目录:  /etc/cron.monthly

    05./etc/cron.deny

    06./etc/crontab

      系统定时任务的配置文件之一

    07.系统定时任务+logrotade命令,完成对日志的日志切割/日志轮询

      /var/log/cron  /var/log/messanges  /var/log/secure

  2.用户定时任务

    01.用户定时任务查看  crontab -l(list)

      说明:列表查看定时任务信息

    02.用户定时任务编辑  crontab -e(edit)

      说明:编辑配置定时任务信息

      crontab -e  =  vi   /var/spool/cron        -----  定时任务配置文件保存目录

               /var/spool/cron/root    ----- root用户设置的定时任务配置文件 

               /var/spool/cron/oldboy  ----- oldboy用户设置的定时任务配置文件

  3.常见信息提示

    01.no  crontab  for  root  相应用户没有编辑定时任务

      

     02.Do  you  want to  retry  the  same  edit  定时任务编辑错误是否继续

      

四.定时任务环境准备

  01.确定定时任务服务是否正在运行(系统当前可以使用定时任务)

    ps -ef|grep crond

    

    systemctl status crond

    

  02.确认定时任务服务是否开机启动(系统重启后也可以继续使用)

    systemctl status crond

    

五.定时任务服务应用方法

  01 配置定时任务服务(crontab -e)

    crontab -e = vi /var/spool/cron/root

              vi /var/spool/cron/oldboy

    当系统中没有编写定时任务文件时,上述所列文件不会存在

    

  02 查看定时任务信息(crontab -l)

    crontab -l = cat /var/spool/cron/root

  03 定时任务命令作用

    1.定时任务命令有语法检查功能,配置文件格式不对会报错

    2.定时任务命令使用时简单方便

      crontab -e

      

       vi /var/spool/cron/root  编写定时任务时不会对格式进行检查

  04 定时任务相关文件

    1 /var/spool/cron  定时任务服务配置文件所在目录

      /var/spool/cron/root    root用户定时任务配置文件

      /var/spool/cron/oldboy   oldboy用户定时任务配置文件

    2 /var/log/cron   定时任务服务运行记录日志文件

      01 日志查看命令  head/tail grep/egrep tail  -f/F less more

      02 日志查看方法

        日志追踪:  tail  -f

        

    3 /etc/cron.deny   定时任务服务禁止用户运行名单

  05 定时任务编写格式

    1.口诀:什么时间做什么,然后再想下一次什么时候执行 什么时间,做什么事情

      01 cat /etc/crontab

        

         定时任务=====>什么时间做什么(重复)

      02 定时任务书写例子

        30 08 * * * go  to  school      每天早上八点半,去学校

        00 24 * * * go  to  bad        每天晚上12点,去床上

        00 23 29 2 6 make  baby      注意:星期几和日期不要同时加上  2月29日 星期六 要使两个条件同时满足时间不定     

    2 定时任务中常用符号

     01 * 每      *  *  *  *  *  命令    ---- 表示每分钟

     02 /n 每隔n    */5  */5  *  *  *  命令   ---- 表示每隔5分钟,每隔5小时

     03 n-m 从n到m   0-59  07-11  *  *  *  CMD  ---- 每天早上7点到11点,每分钟运行CMD命令

     04 n,m n和m    00  17,19,20  *  *  *  CMD  ---- 每天晚上17点和19点及20点整 运行CMD命令

      测验01:每天14:30 ,起来学习
                30 14 * * *
            测验02:每隔三天,夜里两点执行数据备份
                00 02 */3 * *
            测验03:00/10  01,03  *   *    * (没这么写的)???? 书写逻辑错误
                每天凌晨一点和三点 每隔10分钟0点整 --> 01:00  03:00
            测验04:*/10  01-03  *   *    *
                每天凌晨1点到3点每隔十分钟执行 --> 1:00 1:10  .... 3:00
            测验05:*        01,03  *   *    *  ??? 书写逻辑错误
                每天凌晨1点和3点
            测验06:*      01-03  *   *    *
                每天凌晨1点到3点 每分钟执行
            测验07:00       02   28  */2  6  ??? 书写逻辑错误
                每隔两月的28号凌晨2点

     总结:

       01.在写时间信息的时候,如果想表示每隔多久执行什么任务 /前面尽量用*表示,不要写具体数值

       02.时间信息由左到右依次书写,尽量不要跳步

       03.当编写定时任务时,日期信息不要和星期信息同时出现

     3 定时任务的编写流程

      01 定时任务执行命令规范

        1.测试定时执行命令

          定时任务执行的命令需要采用绝对路径

            

             

             上述情形,useradd正常执行没问题,放到定时任务中执行则无法执行

            情况说明:

            编写一个脚本文件,此文件内容是将路径环境变量的内容输出到一个特定文件

            

            直接用命令执行脚本,命令调用的环境变量信息是系统中路径环境变量

            

             此时用定时任务执行上述脚本,再对输出的路径变量进行查看,发现定时任务只会识别/usr/bin:/bin 两个路径

            

            而uaeradd的执行路径是/usr/sbin/useradd  显然定时任务执行useradd是找不到路径信息,自然无法执行成功

             

             解决办法加绝对路径信息

            

             在执行过程中明明执行命令以添加绝对路径但偏偏执行不成功,查看邮件信息,显示useradd命令打不开/etc/passwd

             

            退出定时任务直接执行也一样,看来是/etc/passwd有问题,经查询发现是前期给予了文件锁止能力,所以命令打不开文件

            当我们取消文件的锁止功能后,定时任务命令执行成功

             

        2.编写定时任务信息

          定时任务编写时,需要按照语法规范

            编写注释信息:以便后期维护知晓次命令是何意思

            编写定时任务:*  *  *  *  *  命令 先写出格式然后再根据需求进行编写

            

        3.检查定时任务效果

          查看定时任务日志

          

           查看定时任务效果

            检查命令执行结果

            

        4.排查定时任务问题

          查看定时任务日志

          查看定时任务效果

      02 定时任务执行脚本规范

        1.测试定时执行脚本

          

           

           脚本执行无问题.正常执行

        2.编写定时任务信息

          

           sh在定时任务命令执行路径变量中

          

        3.检查定时任务效果

          查看定时任务日志

          

          查看定时任务效果

          

        4.排查定时任务问题

          查看定时任务日志

          查看定时任务效果

  06 定时任务编写案列

    1 定时编写文件信息

      每分钟将自己的名字追加到/oldgirl/oldgirl.txt中

       1.测试定时执行命令 echo  "wwl" >>/oldgirl/oldgirl.txt

        

        2.编写定时执行任务信息 crontab -e

        # edit  name  input  file

        *  *  *  *  *  echo  "wwl" >>/oldgirl/oldgirl.txt

        

         

        3.检查定时任务效果

        01 查看定时任务配置文件

          crontab  -l =  cat /var/spool/cron/root

         

        02 查看定时任务日志信息

          tail  -f  /var/log/cron         tail   -f  /oldgirl/oldgirl.txt(追踪文件内容)

          

           

    3.定时重启系统服务

      每天23到第二天7点每隔1小时重启nginx服务

        1.测试定时执行命令 

         

    

六.定时任务重点知识总结

  定时任务的9个劝告:

    1.定时任务规则之前加注释  表示定时任务在干什么

    2.使用脚本替代命令执行定时任务

      超过两条命令,就用脚本

      脚本相当于命令的合集

        编写脚本文件

          

         编写定时任务

          

     3.定时任务中的命令记得写成绝对路径,最好文件信息也写成绝对路径

    4.编写定时任务时,可以将输出到屏幕上的信息保存到黑洞中,避免占用磁盘空间

      说明:定时任务中执行命令.如果产生输出到屏幕上的信息,都会以邮件的方式告知用户

        

         此时上述文件会不断变大占用磁盘block空间

        systemctl stop postfix  关闭邮件服务

        

        

         当关闭邮件服务时,系统将会不断产生一些小文件,会占用磁盘inode空间

        systemctl start postfix  开启邮件服务

         当上述两种方式自相矛盾是唯一的解决办法就是,定时任务执行过程中输出的信息重定向到/dev/null黑洞文件中.就不会占用空间

        

      5.编写任务时,尽量不要产生屏幕输出信息

      命令和文件都写绝对路径,以防止错误信息输出,对于一些显示过程的命令参数,最好取消

      比如tar  -zcvf    -v是显示压缩过程,如果写在命令中记得取消-v参数

      最好的方式是无论错误还是正确的屏幕输出信息都丢到黑洞中   /dev/null

     6.定时任务中调用的命令路径环境变量是  /usr/bin:/bin

      对于不是在上述两个路径中的命令记得要写绝对路径,所以在编写定时任务之前,对于命令来说最好先确定命令的路径,以防万一都写成绝对路径

      上述遇到的问题中,注意某些文件的权限也会阻止命令的执行

      比如/etc/passwd由于加了锁止权限   chattr  +i    /etc/passwd    导致命令  useradd无法正常执行

      解决办法是去掉/etc/passwd的锁止权限.

        

原文地址:https://www.cnblogs.com/zp751060301/p/12960771.html