如何更改cron.daily在Linux中运行的时间


22

我在cron.daily中有一个脚本,该脚本每天早晨在特定时间运行。我需要更改其运行时间。

如何更改cron.daily运行脚本的时间?

linux  cron  redhat 

Answers:


24

在Red Hat 5或更早的版本中,这是在中控制的/etc/crontab

较新的版本使用/etc/anacrontab。默认情况下,cron.daily脚本在4:02运行。编辑/etc/crontab将修改该时间。

# run-parts
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

在Debian / Ubuntu系统上,这也是受控制的/etc/crontab

例如; 默认的Ubuntu 12.04安装:

# /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 )
#

在这两种情况下,您都可以在此处找到有关使用哪种语法的更多详细信息:http : //linux.die.net/man/5/crontabman 5 crontab在几乎所有Linux系统上运行。


3
sudo systemctl restart cron.service修改后不要忘记执行。这对于systemd基于系统的系统(例如现代Debian和Ubuntu)是正确的。
TranslucentCloud

3

在RHEL / CentOS 6及更高版本中

# /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_RANGE,对吗?
thelr

1

在openSUSE上,crontab如下所示:

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

run-crons命令/var/spool/cron/lastrun除其他外还验证文件的时间戳。自上次执行以来的时间到期后,它将再次运行cron文件。

可以通过触摸文件来影响时间。例如,将其设置为2012-11-17 03:15:

touch -t 201211140315 /var/spool/cron/lastrun/cron.daily

0

如果线路不存在,这将无法解决任何问题。

尝试找到提及cron.daily的位置,

grep -R cron.daily /etc

然后从那里拿走。


如果使用这些命令,则必须非常小心。例如,对于我的RedHat,它返回/ etc / crontab和/ etc / anacrontab文件。而且,如果您删除带有cron.daily条目的行,则只需关闭所有应每天运行的脚本的执行即可(对我而言,它是logrotate,tmpwatch,cups等)。
卢卡斯·斯特尔马赫

2
我不建议删除该行,问题是在哪里修改cron.daily时间。这就是您的定位方式(因此,这更像是“帮助他们自助”的答案)

-1

您想做两件事:

  1. 从cron.daily中删除脚本,然后放在其他地方。
  2. 在您的crontab中添加一个条目,以在指定的时间运行指定的脚本:

00 10 * * * /path/to/script

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.