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

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

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

评论

在NetBSD上,每天,每周,每月cronjob的时间都在root的crontab中设置。

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

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

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

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

#1 楼

对于发行版,您提到:

在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相同

评论


这背后有什么原因吗?我只能假设这是服务器上最安静的时间。

– Pixel开发人员
2010年5月13日下午14:55

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

– Narendra Jaggi
16年1月2日,11:16



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

–乔丹·瑞特(Jordan Reiter)
16年1月21日在15:57

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

–lzap
16-10-24在7:53

在CO 7上的/ etc / crontab中找不到它

– snh_nl
9月1日15:40

#2 楼

从手册页中:


 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

评论


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

–mbrownnyc
13年7月22日在15:59

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

– elysch
16年5月13日在16:50



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

–leonbloy
16年5月13日在17:53

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

–storm_m2138
16年7月14日在17:40



@mbrownnyc也是CentOS-7

–特雷弗·博伊德·史密斯(Trevor Boyd Smith)
18年1月1日在17:30

#3 楼

对于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

#4 楼

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

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

评论


多谢! SuSE对我来说并不透明,我感谢您的回答。

–dr0i
16年8月2日在8:18



与OpenSUSE相同-默认值为“”,即。最后一次启动后四分之一。此方法适用于台式计算机,这些台式计算机在不需要时通常会关闭。

– Jasio
12月17日8:25



#5 楼

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

评论


这是Ubuntu Lucid 10.04 LTS的正确文件。我的默认设置是cron.daily的上午6:25。

–geekQ
2011年8月8日13:46

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

–Stéphane
15年5月6日在10:51

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

–WinEunuuchs2Unix
17年1月1日在11:47

#6 楼

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

yum安装cronie-noanacron
yum擦除cronie-anacron

然后您现在拥有/etc/cron.d/dailyjobs来配置最佳配置为您的每日,每周和每月工作安排时间。

评论


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

–cincodenada
13年2月21日在20:18

@cincodenada这不是Daniel Stantos的建议。

–mikemaccana
13年5月14日在16:28

#7 楼

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

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

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


#8 楼

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

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


#9 楼

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

#10 楼

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