我的服务器是 CentOS 5。当我编辑 /etc/crontab 或通过“crontab -e”命令编辑任何用户(包括 root)的 crontab 时,它只会添加“(系统) RELOAD (/etc/crontab)”或“(admin) RELOAD (cron/admin)”。/var/log/cron 中没有 CMD。
/var/log/cron 中的示例条目:
Aug 10 10:21:33 localhost crontab[31688]: (root) BEGIN EDIT (root)
Aug 10 10:21:42 localhost crontab[31688]: (root) REPLACE (root)
Aug 10 10:21:42 localhost crontab[31688]: (root) END EDIT (root)
Aug 10 10:22:01 localhost crond[2688]: (root) RELOAD (cron/root)
“service crond status”的结果:
crond (pid 1345) is running...
命令“cat /var/log/messages | grep cron”没有给出任何结果。
/etc/cron.allow 的内容:
admin
root
/etc/crontab 的内容:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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
* * * * * root run-parts /bin/date >> /data/date.txt
ps aux |grep cron 的结果:
root 1345 0.0 0.1 5268 1204 ? Ss 11:43 0:00 crond
管理员的crontab内容:
* * * * * /bin/date >> /data/date.txt
请注意,不仅管理员的 crontab 没有运行。所有 cron 作业均未运行。
知道他们为什么不跑吗?
答案1
检查您是否有 /etc/cron.allow 文件或 /etc/cron.deny 文件导致作业被忽略。
如果 /etc/cron.allow 不存在,那么每个人都可以运行 cron 作业。如果存在但为空,我不确定是否允许任何人运行 cron 作业。
答案2
你的 crontab 中有错误,请查看:
* * * * * root run-parts /bin/date >> /data/date.txt
你使用目录 /bin/date 调用 run-parts - 这肯定会失败。错误会进入 stderr,不会被缓存>>
答案3
/etc/cron.allow
如果不存在则创建该文件并将用户名添加到其中。
答案4
尽管该问题的答案已被接受,但我还是想添加对我有用的内容。引用 URL 是一个好主意,如果它包含查询,则如果不引用所有内容,它可能无法工作。
不要忘记将包含“?,=,#,%”的 URL 放在引号中。
例子。 https://paystack.com/indexphp?docs/api/#transaction-charge-authorization&date=today 应该像这样引用“https://paystack.com/indexphp?docs/api/#transaction-charge-authorization&date=today”