• 第07章linux系统定时任务crond入门


    7.1程序和进程的概念

    程序:
    是为了解决一个信息处理任务而预先的编制的工作指向方案,是由一串CPU能够执行的基本指令组成的序列,每条指令规定了计算机应进行什么操作及需要相关的有关数据。

    简单的说,我们使用的命令就是程序

    进程概念:

    所谓进程,就是指现在系统正在执行程序,每当输入一个命令时,SHELL也会同时启动一个进程。

    进程特点:

    进程启动时,系统会指定一个唯一的数值给每一个进程,数值称为进程(ID)

    每个进程都可能有两种方式存在:前台和后台。

    系统的服务都是以后台的方式存在,且都会常驻在系统中,直到关机为止,例如sshd.

    7.2  Linux系统crond定时任务介绍

    7.2.1定时任务的基础学习-了解定时任务

    1.crond是什么?

    Crond是linux系统中用来定期执行命令和或者指定程序任务的一种服务,或者软件,一般在我们安装系统的时候,crond就默认存在。

    优化开机自启动服务的时候,第一个就是crond。

    Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规划来执行这个定时任务。

    企业环境定时任务

    2.为什么需要定时任务?
    服务器:7*24小时开机提供服务是网站的基本特征。

    服务器有重要的数据:最低一天备用一次,或者每分钟增量备份一次,半夜备份。所以定时任务就产生,定时有个备份程序,触发定时任务,就会执行备份。

    1. 定时任务的分类

                1)  系统自身的定期执行的任务

    [root@localhost logrotate.d]# ll /etc/|grep cron
    -rw-------.  1 root root    541 7月  27 2015 anacrontab
    drwxr-xr-x.  2 root root     20 9月  13 21:57 cron.d
    drwxr-xr-x.  2 root root     62 9月  13 21:57 cron.daily
    -rw-------.  1 root root      0 7月  27 2015 cron.deny
    drwxr-xr-x.  2 root root     44 9月  13 21:57 cron.hourly
    drwxr-xr-x.  2 root root      6 6月  10 2014 cron.monthly
    -rw-r--r--.  1 root root    451 6月  10 2014 crontab
    drwxr-xr-x.  2 root root      6 6月  10 2014 cron.weekly
    系统自身轮训任务
    [root@localhost ~]# ll /var/log/messages*
    -rw-------. 1 root root 225390 9月  24 16:50 /var/log/messages
    -rw-------. 1 root root 449608 9月  19 05:45 /var/log/messages-20190919
    -rw-------. 1 root root 403290 9月  23 17:30 /var/log/messages-20190923
    [root@localhost ~]# ll /var/log/secure*
    -rw-------. 1 root root 2827 9月  24 16:47 /var/log/secure
    -rw-------. 1 root root 3694 9月  19 05:19 /var/log/secure-20190919
    -rw-------. 1 root root 2070 9月  23 16:16 /var/log/secure-20190923
    系统轮询的日志-定时轮询
    [root@localhost logrotate.d]# less /etc/logrotate.conf
    # see "man logrotate" for details
    # rotate log files weekly
    Weekly //每周
     
    # keep 4 weeks worth of backlogs //保持四周
    rotate 4
     
    # create new (empty) log files after rotating old ones //老文件过期创建一个新文件
    create
     
    # use date as a suffix of the rotated file //使用扩展的日期轮回文件
    dateext
     
    # uncomment this if you want your log files compressed
    #compress
     
    # RPM packages drop log rotation information into this directory 
    include /etc/logrotate.d
     
    # no packages own wtmp and btmp -- we'll rotate them here
    /var/log/wtmp {
        monthly
        create 0664 root utmp
            minsize 1M
        rotate 1
    }
     
    /var/log/btmp {
        missingok
        monthly
        create 0600 root utmp
        rotate 1
    }
    

      

            2) 用户自身完成的定时任务

     

         定时任务的了解

    1)      At适合执行一次就结束的调度任务,突发性任务。

    2)      Anacron适合于非7*24小时的服务器准备的。开机执行的工作,会检测到关机时应该执行但是未执行的任务,在开机后一次性执行一遍。(了解)

    3)      Crond服务7*24小时,只要服务器需要执行的,每分钟都可以执行。

    注意:crond是一个定时任务的进程,而crontab是用户用来设置定时任务规则的命令。

     3.      定时任务的书写指令的使用格式

    用户的定时任务分为六段

     

    对于时间段来说,前五段都一样。

    系统的定时任务分为八段

     

    前四行是用来配置crond任务运行的环境变量

    第一行SHELL变量指定了系统要使用哪个shell,这里是bash

    第二行PATH变量指定了系统执行命令的路径

    第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

    如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

    第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

    分时日月星

    星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

     练习:

    (00 23 * * *--每晚23时执行)

    (00 17-19 * * * --每晚17-19时执行)

    (*/5 * * * *--每隔五分钟执行一次)

    (30 3,12 * * *--每天凌晨三点到中午12点半)

    (30 8-18/2 * * * --早上八点到下午六点半每隔两个小时执行一次)

    (45 4 1,10,22 * *--每月的1日10日22日的凌晨4点45分执行)

    (10 1 * * 6,0—每周六周日的凌晨1点十分执行)

    (* 23,00-07/1 * * *--每天23点,凌晨12点到早晨7点每小时每一分钟执行一次)

    (5月5号上午九点执行:00 09 05 05 *)

    (每周日,上午9:30执行:30 09 * * 0)

    注意:周和日不要同时用,否则可能达不到想要的效

    7.3  crontab定时任务生产应用问题7箴言

    1、   系统环境变量问题

     Crontab执行shell只能识别为数不多的系统环境变量,一般用户定义的普通变量是无法识别的,如果在编写脚本中需要使用这些变量,最好使用export重新声明下该脚本才能正常执行。

    2、   定时任务要用绝对路径

    Crontab执行shell时,如果shell路径是相对路径或者shell里含有的绝对路径,此时 就会找不到文件。

    3、  脚本权限问题加/bin/sh

    要保证crontab的执行者有访问shell脚本所在的目录并且执行此shell脚本的权限,最佳的方法就是执行脚本前加/bin/sh,否则有可能因为忘了为脚本设定执行权限,而无法完成任务。

    4、 时间变量问题用反斜线

    “%”号在crontab任务配置中被认为是newline。需要用“”来转义。Crontab任务命令中,如果有“date+%Y%m%d”,必须替换为  “date+\%Y\%m\%d”

    5、 >/dev/null2>&1问题

    当定时任务在你所指定的时间执行,系统会寄信给你,显示该程序执行的内容,若系统未开启邮件服务就会导致邮件临时目录/var/spool/clientqueue碎文件件逐渐增加,wei此命令为了防止占满inode.   

    6、  定时任务定时规范之前加注释

    写定时任务加注释,什么人物,什么时间,因为什么事,干了什么,都要记得清清楚楚。

    7、  避免不必要的程序及命令的输出

    在开发定时任务程序和脚本时,在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果需要,可指向到定时日志文件里,以避免多余的系统垃圾。    

  • 相关阅读:
    AngularJS in Action读书笔记4(实战篇)——创建Statistic模块
    AngularJS in Action读书笔记3——走近Services
    AngularJS in Action读书笔记2——view和controller的那些事儿
    AngularJS in Action读书笔记1——扫平一揽子专业术语
    Nodejs学习笔记(四)——支持Mongodb
    Nodejs学习笔记(三)——一张图看懂Nodejs建站
    Nodejs学习笔记(二)——Eclipse中运行调试Nodejs
    Nodejs学习笔记(一)——初识Nodejs
    Unity Shader 获取模型空间坐标
    Unity Shader 修改自定义变量的值
  • 原文地址:https://www.cnblogs.com/hanjiali/p/11633916.html
Copyright © 2020-2023  润新知