解决方案

解决方案

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

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

答案1

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

答案2

在 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

答案3

Ubuntu 19.10(可能更早版本)正在使用systemd计时器来运行anacron

解决方案

更改执行时间的方法anacron是使用此命令:

sudo systemctl edit --full anacron.timer

然后修改该行:

OnCalendar=*-*-* 07..23:30

什么不起作用

编辑/etc/crontab没有帮助。

25 7    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

运算符之前的部分||仅测试是否anacron已安装,不会执行任何操作。 而之后的部分仅在之前的部分未成功完成(惰性运算符评估)时才执行,这意味着anacron未安装。

编辑/etc/cron.d/anacron也无济于事。

30 7-23 * * *   root    [ -x /etc/init.d/anacron ] && if [ ! -d /run/systemd/system ]; then /usr/sbin/invoke-rc.d anacron start >/dev/null; fi

if [ ! -d /run/systemd/system ]安装 systemd 后,该条件会阻止脚本运行。

改变执行时间的正确方法是通过编辑systemd计时器,如开头所述。

答案4

如果没有这条线,这并不能解决任何问题。

尝试使用以下命令查找提到 cron.daily 的位置

grep -R cron.daily /etc

然后从那里拿走。

相关内容