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


什么时候进入 cron.daily (和 .weekly 和 .hourly)运行,是否可配置?

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

我正在运行RHEL5和CentOS 4,但对于其他发行版/平台也会很棒。


178
2018-04-26 15:31




上 NetBSD的,每日,每周,每月cronjobs的时间在root的crontab中设置。 - hd1
如果编辑问题更通用,这个问题会更有用。至少对于任何版本的redhat,centos发行版而不仅仅是版本4和5(没有广泛使用,并且是“生产结束“ (相近 生命尽头)。 - Trevor Boyd Smith
@TrevorBoydSmith - 这个问题是在近8年前被问到的。随意更新一个更新的版本。但是RHEL 6 甚至不存在2010年4月: access.redhat.com/articles/3078#RHEL6 - warren
@warren我的意图不是批评,而只是改进问题和stackoverflow一般。 (我知道当问题被问到时,RHEL 6不存在。因为这个问题有很多upvotes现在让它更通用会很好。) - Trevor Boyd Smith
@TrevorBoydSmith ..已经有一个CentOS / RHEL 6的答案:) ...如果您有一些想法,我很乐意批准您的良好编辑。继续对您想到的问题进行建议编辑 - warren


答案:


对于你提到的发行版:

在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运行。

在CentOS 4.8上也是如此


136
2018-04-26 16:23



这背后有什么理由吗?我只能假设它是服务器上最安静的时间。 - The Pixel Developer
@它在ubuntu运行的时间是什么时候?你能告诉我怎么检查吗?我无法理解命令输出 - Narendra Jaggi
@NarendraJaggi“run-parts”命令意味着“运行此文件夹中的所有内容”。 cron.daily等文件夹工作,因为有一个cron作业来执行这些目录上的运行部件。所以 grep run-parts /etc/crontab 只需找到有关何时为每个目录调用run-parts的说明。 - Jordan Reiter
这不再是CentOS 6或更高版本的有效答案,请向下滚动以获取更多信息。 - lzap


从手册页:

 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


63
2018-04-26 15:35



情况就是如此 CentOS 6。谢谢。 - mbrownnyc
这意味着每隔“1”天凌晨5点?对不起,但这没有回答。 - elysch
@elysch让我重复我的答案的最后一行:另见“man anacrontab” - leonbloy
对anacron的好解释 这里。基本上, anacron的 具有 没有固定的开始时间,而是将基于最后一个进程运行的时间以指定的延迟启动该进程。如果机器在关闭过程中 应该跑了,然后它将在指定的延迟后机器重新启动时启动该过程(除非没有特殊范围+随机延迟,请参阅@spechal的答案)。 - storm_m2138
@mbrownnyc和CentOS-7也是如此 - Trevor Boyd Smith


对于CentOS 6,你需要grep / etc / anacrontab,如果服务器/ laptop / 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以上运行。

** 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


38
2017-10-29 21:20





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

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


12
2017-08-16 03:18



多谢! SuSE对我来说相当不透明,我很感激你的回答。 - dr0i


在Ubuntu上,您将找到一个文件/ etc / crontab,从中配置它。我想在RH和Centos上有类似的东西。


9
2018-04-26 15:33



这是Ubuntu Lucid 10.04 LTS的正确文件。我的默认设置是cron.daily上午6:25。 - geekQ
仍然在Ubuntu 15.04上午6:25设置。但我注意到cron必须在启动作业时插入一些随机性。查看我的日常工作创建的文件的时间戳,我发现有些日子它早在6点26分就开始运行,而其他日子则在早上8点04分运行。 - Stéphane
仍然在Ubuntu 16.04上午6:25设置 - 每小时17分钟。每日早上6:25。每周星期六上午6:47。每月上午6:52,每月的第一天。 - WinEunuuchs2Unix


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

yum install cronie-noanacron

yum erase cronie-anacron

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


4
2017-08-29 19:50



如果安装了anacron,你不能按照其他评论编辑/ etc / anacrontab而不是卸载它吗? - cincodenada
@cincodenada这不是Daniel Stantos所暗示的。 - mikemaccana


我使用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

4
2018-03-12 21:50





/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

3
2018-04-26 15:54





就Solaris而言,没有这样的设施。只需使用常规crontab条目即可完成日常任务。


2
2018-04-26 15:52





OpenSuse 42.x更新:

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

/ 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 via;

systemctl restart cron.service

0
2017-08-20 15:05