我有一个希望每天运行的 shell 脚本(用于更新 CentOS 并通过 SSMTP 发送确认电子邮件)。该脚本运行正常,位于 /etc/cron.daily 中,问题是它每小时运行一次,而不是每天在我指定的时间运行。
我的 /etc/crontab 文件如下所示:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
05 13 * * * root run-parts /etc/cron.daily
05 13 * * 6 root run-parts /etc/cron.weekly
现在,在手动编辑此文件之后,我发现我应该使用“crontab -e”命令,我照做了,输出如下所示:
05 13 * * * root run-parts /etc/cron.daily
05 13 * * 6 root run-parts /etc/cron.weekly
我还读到 /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
我本来打算让脚本每天下午 13:05 运行,但是实际上脚本每小时大约在整点 40 分运行一次,而我在这 3 个文件中找不到触发该脚本的任何地方。
我很高兴在 Ubuntu 中成功安排了 cron 任务,但 CentOS 却显得有点复杂。我是不是在某个地方犯了明显的错误?
非常感谢您的帮助。
答案1
做完之后
crontab -e
添加一些简单的东西:
@daily sh /path/to/myscript
那应该每天执行myscript。
如果您想要一天中的特定时间:
0 16 * * * sh /path/to/myscript
每天 16:00 执行该脚本