Linux:Cron在什么时候进入cron.daily,cron.weekly,cron.monthly Run?

时间:2020-01-09 10:42:28  来源:igfitidea点击:

我在Dell poweredge服务器上使用Red Hat Enterprise Linux服务器6。
如何知道/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly中的条目何时在CentOS/RHEL v6.x/7.x和Debian/Ubuntu Linux服务器上运行?
在大多数现代Linux发行版中,您都使用cron。
它是执行计划命令的守护程序,即用于以天为单位指定的频率定期执行命令。

Anacron用于定期执行命令,频率以天为单位。
与cron不同,它不假定机器正在连续运行。
因此,它可以用于每天24小时不运行的机器上,以将常规作业控制为每日,每周和每月作业。

RHEL/CentOS Linux v6.x找出 /etc/cron.{daily,weekly,monthly}/ 的cron时间。

执行以下cat命令以查看文件:

# cat /etc/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
 
#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

其中:

  • START_HOURS_RANGESTART_HOURS_RANGE变量设置作业可以开始的时间范围。作业将仅在3-22(3 AM-10PM)小时内启动。
  • cron.daily将在凌晨3:05运行,即每天凌晨3:05运行。
  • cron.weekly将在凌晨3:25运行,即每周凌晨3:25运行。
  • cron.monthly将在凌晨3:45运行,即每月凌晨3:45运行一次。

了解RANDOM_DELAY环境变量

如果设置了RANDOM_DELAY环境变量,则将在0到RANDOM_DELAY分钟之间的随机值添加到作业的启动延迟中。
例如,设置为30的RANDOM_DELAY因此会在用户定义的延迟中随机增加0到30分钟之间。
对于以下条目,cron.daily的延迟将为5分钟+ RANDOM_DELAY:

RANDOM_DELAY=30
1         0    cron.daily          nice run-parts /etc/cron.daily

关于较旧系统的注释,即RHEL/CentOS v5.x/v4.x

上面的示例显示了如何设置与/etc/crontab中的先前设置类似的行为,它将仅在3:00和22:00之间启动所有常规作业。
换句话说,在较旧的系统上使用/etc/crontab文件:

# cat /etc/crontab

Debian Linux v6.x找出/etc/cron。{每天,每周,每月} /的cron时间。

使用以下命令:

# cat /etc/crontab

输出示例:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

执行以下命令:

# cat /etc/anacrontab

输出示例:

# /etc/anacrontab: configuration file for anacron
 
# See anacron(8) and anacrontab(5) for details.
 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
# These replace cron's entries
1	5	cron.daily	 nice run-parts --report /etc/cron.daily
7	10	cron.weekly	 nice run-parts --report /etc/cron.weekly
@monthly	15	cron.monthly nice run-parts --report /etc/cron.monthly

Ubuntu Linux LTS v12.04找出/etc/cron的cron时序。{每天,每周,每月} /

执行以下命令:

# cat /etc/crontab

输出示例:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 
# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
  • 每小时在上午1:17,上午2:17,下午3:17:1:17每小时运行cron.daily。
  • 每天早上6:25运行一次cron.daily。
  • 每天早上6:47每周运行一次cron。
  • 每天早上6:42运行一次cron。每月一次。

如何配置和更改当前设置?

编辑/etc/anacrontab,执行:

# vi /etc/anacrontab

本示例说明如何仅在7:00和9:00之间开始所有常规作业。
添加了RANDOM_DELAY,最长为15分钟。
作业将在队列中运行。
一个完成后,下一个将开始。

# environment variables
       SHELL=/bin/sh
       PATH=/sbin:/bin:/usr/sbin:/usr/bin
       [email protected]
       RANDOM_DELAY=15
       # Anacron jobs will start between 7 and 9 o'clock.
       START_HOURS_RANGE=7-9
       # delay will be 5 minutes + RANDOM_DELAY for cron.daily
       1         0    cron.daily          nice run-parts /etc/cron.daily
       7         0    cron.weekly         nice run-parts /etc/cron.weekly
       @monthly  0    cron.monthly        nice run-parts /etc/cron.monthly