cron和anacrontab

简介:

https://www.douban.com/note/591925191/


crontab不多说,
/etc/crontab #系统的任务计划
/etc/cron.d/  #配置文件中典型的.d文件夹
/var/spool/cron/YOUR_USER_NAME #这个文件才是跟crontab -e/-l 关联的


[root@localhost log]# cat /etc/cron.d/0hourly  #.d文件夹里包含了这个配置,表示每小时的01分执行
# Run the hourly jobs                                   # /etc/cron.hourly目录下的所有脚本  
SHELL=/bin/bash                                        
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly   # run-parts是个脚本,执行某个目录下所有的脚本。root是执行该脚本的用户名


[root@localhost log]# cat /etc/cron.hourly/0anacron  #cron.hourly目录下的脚本,根据条件执行
#!/bin/sh                                                               # anacron命令    
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
    day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
    exit 0;
fi

# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
    /usr/bin/on_ac_power >/dev/null 2>&1
    if test $? -eq 1; then
    exit 0
    fi
fi
/usr/sbin/anacron -s


[root@localhost log]# cat /etc/anacrontab   #anacrontab的配置文件
# /etc/anacrontab: configuration file for 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                 #最大延迟时间
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22   #只在03到22点之间执行

#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

1 5 cron.daily nice run-parts /etc/cron.daily  #每天都执行/etc/cront.daily/目录下的脚本文件,真实的延迟RANDOM_DELAY+delay。这里的延迟是5分钟,加上上面的RANDOM_DELAY,所以实际的延迟时间是5-50之间,开始时间为03-22点,如果机器没关,那么一般就是在03:05-03:50之间执行。nice命令将该进程设置为nice=10,默认为0,即低优先级进程。

如果RANDOM_DELAY=0,那么表示准确延迟5min,即03:05执行cron.daily

综上,整个逻辑流为:
crontd进程每小时的01分执行/etc/cront.hourly/0anacron --->执行anacron -->根据/etc/anacrontab的配置执行/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly



本文转自 pk2008 51CTO博客,原文链接:
http://blog.51cto.com/837244/1981982

相关文章
|
6月前
|
Unix Linux
Cron介绍,以及常见的cron表达式
Cron介绍,以及常见的cron表达式
160 0
|
SQL Linux Apache
Crontab 详解
Crontab 详解
|
Unix Linux Shell
cron设置定时任务详解
cron设置定时任务详解
cron和crontab
crontab -l 列出目前的计划任务(时程表) crontab -e 编辑计划任务   计划任务的格式如下: f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。
840 0
|
JavaScript 前端开发