zoukankan      html  css  js  c++  java
  • cron 和anacron 、日志转储的周期任务

    一、cron是开机自动启动的
    [root@localhost ~]# chkconfig --list | grep "cron"
    crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    可以看到 crond 在系统的3级别是自动启动的。3级、5级是常用的级别
     
    [root@localhost ~]# chkconfig --list | grep "cron"
    crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
    另外可以在 /etc/init.d 目录中看到自动启动的服务。这些服务可以通过service 来启动和关闭
     
    [root@localhost ~]# cd /etc/init.d
    [root@localhost init.d]# ls
    abrt-ccpp         certmonger  halt          mcelogd     nfs-rdma     quota_nld    rpcsvcgssd  sysstat
    abrtd             cgconfig    ip6tables     mdmonitor   ntpd         rdisc        rsyslog     udev-post
    abrt-oops         cgred       iptables      messagebus  ntpdate      rdma         sandbox     winbind
    acpid             cpuspeed    irqbalance    netconsole  numad        restorecond  saslauthd   ypbind
    atd               crond       kdump         netfs       oddjobd      rngd         single
    auditd            cups        killall       network     portreserve  rpcbind      smartd
    autofs            functions   lvm2-lvmetad  nfs         postfix      rpcgssd      sshd
    blk-availability  haldaemon   lvm2-monitor  nfslock     psacct       rpcidmapd    sssd
     
    二、cron 开机启动后感什么工作
    man cron
    Cron should be started from /etc/rc.d/init.d or /etc/init.d (定义cron 开机自启)
     
    1、查看 /var/spool/cron
    Cron searches /var/spool/cron ,看有没有我们定义的crontab 周期任务
    通过crontab -e 创建的周期任务在 此目录显示,同过crond 服务调用
     
     
    2-1、查看 /etc/cron.d directory,目录

    [root@localhost init.d]# cd /etc/cron.d [root@localhost cron.d]# ls 0hourly raid-check sysstat [root@localhost cron.d]# cat 0hourly SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 01 * * * * root run-parts /etc/cron.hourly

    每小时一分 执行 /etc/cron.hourly 目录下的脚本
     

    [root@localhost cron.d]# cd  /etc/cron.hourly/
    [root@localhost cron.hourly]# ls
    0anacron  mcelog.cron
    [root@localhost cron.hourly]# cat 0anacron #!/bin/bash # Skip excecution unless the date has changed from the previous run if test -r /var/spool/anacron/cron.daily; then /var/spool/anacron/cron.daily文件中 存放cron 上次启动时间 如果当期的时间和文件中的时间一致,表示本次已经执行完毕,无需再次执行 day=`cat /var/spool/anacron/cron.daily` fi if [ `date +%Y%m%d` = "$day" ]; then exit 0; fi # Skip excecution unless AC powered if test -x /usr/bin/on_ac_power; then /usr/bin/on_ac_power &> /dev/null if test $? -eq 1; then exit 0 fi fi /usr/sbin/anacron -s 开机后的第一个 一分钟 (每个小时的第一分钟)开启 anacron 服务 anacron 由 cron 启动
    2-2、查看 /etc/anacrontab 中的内容 cat

    Cron also searches for /etc/anacrontab
    [root@localhost cron]# cat /etc/anacrontab 
    # /etc/anacrontab: configuration file for anacron
    anacron的配置文件
    # See anacron(8) and anacrontab(5) for details.
     
    SHELL=/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    # the maximal random delay added to the base delay of the jobs
    RANDOM_DELAY=45 随机延迟时间 0-45 分钟
    # the jobs will be started during the following hours only
    START_HOURS_RANGE=3-22 执行时间 3点到 22点
    几天执行一次 固定延迟几分钟 nice 执行的命令
    #period in days delay in minutes job-identifier command
    1 5 cron.daily nice run-parts /etc/cron.daily
    7 25 cron.weekly nice run-parts /etc/cron.weekly
    @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
     
    分别按 日期 周 月份 执行 /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
    目录中的脚本
    在这里 看到了 logrotate 日志转储程序,每天执行一次。、
      
    [root@localhost cron.daily]# cat logrotate 
    #!/bin/sh
    /usr/sbin/logrotate /etc/logrotate.conf 执行logrotate 转储命令,读 
    取/etc/logrotate.conf 主要配置文件(包含次要配置文件/etc/logrotate.d)按照 配置文
    件的规则对日志进行转储
    EXITVALUE=$?
    if [ $EXITVALUE != 0 ]; then
     /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    fi
    exit 0
     
    三、日志的转储是通过 anacron 执行的周期任务。是开机后 cron 检查文件和目录后 开启 anacron 服务,在执行 anacron 中定义的周期任务的文件 logrotate 对日志进行转储
  • 相关阅读:
    python知识点
    python模块------pyinotify
    python模块------sys
    Ansible-----变量
    Docker-----仓库
    python模块------shutil
    Ansible-----循环
    ceph简单用户管理
    【js】两个数相除有余数时结果加1
    win10家庭版和专业版远程桌面出现身份验证错误, 要求的函数不受支持。解决办法【亲测有效】
  • 原文地址:https://www.cnblogs.com/cmgg/p/10262411.html
Copyright © 2011-2022 走看看