`cron.daily`什么时候运行?


199

cron.daily(和.weekly.hourly)中的条目何时运行,并且可配置?

我还没有找到确切的答案,希望有一个答案。

我正在运行RHEL5和CentOS 4,但对于其他发行版/平台也将非常有用。


2
NetBSD上,每天,每周,每月cronjob的时间在root的crontab中设置。
hd1 2014年

如果问题被编辑为更通用,则该问题将更有用。至少使该问题适用于任何版本的redhat,centos发行版,而不是仅适用于版本4和5(未广泛使用并且属于“ 生产终止 ”(类似于寿命终止))
Trevor Boyd Smith

@TrevorBoydSmith-这个问题是在近8年前提出的。随时询问更新的版本。但是RHEL 6 甚至在2010年4月甚至不存在access.redhat.com/articles/3078#RHEL6
沃伦(

@warren我的目的不是批评,而是总体上改善问题和stackoverflow。(我知道在提出问题时RHEL 6不存在。因为该问题现在获得了很多支持,所以可以更通用一些。)
Trevor Boyd Smith,

@TrevorBoydSmith ..已经有CentOS / RHEL 6的答案了:) ...如果您有什么想法,我很乐意批准您的良好编辑。继续对您想到的问题进行建议的修改
Warren

Answers:


151

对于发行版,您提到:

在CentOS 5.4上(对于RHEL5应该相同)

grep run-parts /etc/crontab

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

因此,cron.daily的运行时间为04:02 am。

与CentOS 4.8相同


1
这背后有什么原因吗?我只能认为这是服务器上最安静的时间。
Pixel开发人员

@它什么时候在ubuntu中运行?你能告诉我如何检查吗?我无法理解命令输出
Narendra Jaggi

@NarendraJaggi“ run-parts”命令的意思是“运行此文件夹中的所有内容”。之所以使用cron.daily等文件夹,是因为存在cron作业来执行这些目录上的运行部件。因此,grep run-parts /etc/crontab只需查找有关何时为每个目录调用运行部件的说明。
Jordan Reiter

2
对于CentOS 6或更高版本,这不再是有效答案,向下滚动更多内容。
lzap

74

从手册页:

 Cron also searches for /etc/anacrontab

/etc/anacrontab 在我的系统(Fedora 12)中:

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

也可以看看 man anacrontab


6
就是这种情况CentOS 6。谢谢。
mbrownnyc

3
这意味着每“ 1”天凌晨5点吗?对不起,但这无济于事。
elysch '16

3
@elysch让我重复我的回答的最后一行:另请参阅“ man anacrontab”
leonbloy

2
这里有很好的解释。基本上,anacron的已经没有固定的起始时间,而是将开始基于在最后一个进程运行,用指定的延迟的过程。如果在应该运行该进程的情况下关闭了机器,则它将在指定的延迟(无特殊范围+随机延迟,请参阅@spechal的回答)之后在重新启动计算机时启动该进程。
storm_m2138 '16

2
@mbrownnyc,还有CentOS-7
Trevor Boyd Smith,

43

对于CentOS 6,您需要grep / etc / anacrontab,如果服务器/笔记本电脑/ dekstop / etc已关闭或未关闭,答案会有所不同。

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

因此,在凌晨3点至晚上10点**(重新启动后和计算机启动5分钟后^^)之间,运行/etc/cron.daily。如果没有重新启动,则该作业应在3:05 AM++上运行。

** As defined by START_HOURS_RANGE
^^ As defined by FIELD_TWO (i.e. the 5 after the 1 in the cron.daily line)
++ plus a random time between 0 and 45 minutes as defined by RANDOM_DELAY

参考:http : //linux.die.net/man/5/anacrontab


14

对于SuSE系统(特别是SLES 11.1和openSuSE 10.3),/ etc / cron.daily脚本的每日运行时间由/ etc / sysconfig / cron文件中设置的DAILY_TIME变量的值控制。

如果未设置DAILY_TIME变量,则默认为:(上次启动时间+ 15分钟)。


多谢!SuSE对我而言并不透明,我感谢您的回答。
dr0i

9

在Ubuntu上,您将在/ etc / crontab文件中找到该文件的配置位置。我猜这在RH和Centos上是类似的。


2
这是Ubuntu Lucid 10.04 LTS的正确文件。我的默认设置是cron.daily的6:25 am。
geekQ 2011年

在Ubuntu 15.04上仍设置为上午6:25。但是我注意到cron在开始工作时必须插入一些随机性。通过查看我日常工作创建的文件的时间戳,我发现它有时运行于6:26,而另一些则运行于8:04。
斯特凡2015年

1
仍然在Ubuntu 16.04上的上午6:25设置-每小时凌晨17点。每天早上6:25。每周星期六上午6:47。每月的第一天上午6:52。
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x默认安装软件包cronie-anacron。你必须:

百胜安装cronie-noanacron

百胜清除cronie-anacron

然后,您现在可以使用/etc/cron.d/dailyjobs为您的每日,每周和每月作业配置最佳计划时间。


2
如果安装了anacron,您是否只能按照此处的其他说明编辑/ etc / anacrontab而不是将其卸载?
cincodenada

1
@cincodenada这不是Daniel Stantos的建议。
mikemaccana

4

我使用Slackware(14.0),并且没有/etc/crontab。另外,anacron也不是发行的一部分。

我系统上的解决方案就像crontab -l以root用户身份运行一样简单:

root@flea:~# crontab -l
# If you don't want the output of a cron job mailed to you, you have to direct
# any output to /dev/null.  We'll do this here since these jobs should run
# properly on a newly installed system.  If a script fails, run-parts will
# mail a notice to root.
#
# Run the hourly, daily, weekly, and monthly cron jobs.
# Jobs that need different timing may be entered into the crontab as before,
# but most really don't need greater granularity than this.  If the exact
# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
# needs, feel free to adjust them.
#
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

3

/etc/anacrontab我的Ubuntu 9.10系统上:

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

2

就Solaris而言,没有这种功能。只需将常规crontab条目用于日常任务即可。


1

OpenSuse 42.x更新:

/ etc / crontab显示文件/ usr / lib / cron / run-crons,该文件应该每15分钟运行一次。

/ usr / lib / cron / run-crons依次(有可能的代码行)在/ etc / sysconfig / cron中寻找名为DAILY_TIME的变量

该文件显示;

# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be "14:00".
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.

DAILY_TIME=""

将其设置为所需的时间,然后通过以下方式重新启动cron:

systemctl restart cron.service
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.