我在cron.daily中有一个脚本,该脚本每天早晨在特定时间运行。我需要更改其运行时间。
如何更改cron.daily运行脚本的时间?
我在cron.daily中有一个脚本,该脚本每天早晨在特定时间运行。我需要更改其运行时间。
如何更改cron.daily运行脚本的时间?
Answers:
在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/crontab或man 5 crontab
在几乎所有Linux系统上运行。
在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
在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
如果线路不存在,这将无法解决任何问题。
尝试找到提及cron.daily的位置,
grep -R cron.daily /etc
然后从那里拿走。
您想做两件事:
00 10 * * * /path/to/script
sudo systemctl restart cron.service
修改后不要忘记执行。这对于systemd
基于系统的系统(例如现代Debian和Ubuntu)是正确的。