我有一个每小时执行一次的 cronjob 脚本curl
,其中包含 php 脚本。php 脚本未执行。crontab -e
我有:
1 * * * * /var/www/path/to/script.sh
执行grep cron /var/log/syslog
输出:
Mar 23 21:45:01 Emile CRON[5339]: (root) CMD (/var/www/path/to/anotherscript.sh)
Mar 23 22:01:01 Emile CRON[5386]: (root) CMD (/var/www/path/to/anotherscript.sh)
Mar 23 22:01:01 Emile CRON[5387]: (root) CMD (/var/www/path/to/script.sh)
Mar 23 22:14:01 Emile CRON[5425]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Mar 23 22:15:01 Emile CRON[5429]: (root) CMD (/var/www/path/to/anotherscript.sh)
curl
我已经验证了输入的 URLscript.sh
是正确的,输入的路径也是正确的。我还验证了 php 脚本在手动执行时可以正常工作。还有什么?有什么想法吗?还有其他诊断方法吗?我的系统日志中crontab -e
有什么内容?cd / && run-parts
先谢谢您的帮助!
答案1
通常情况下会发生一个$PATH
问题。它是curl
使用其完整路径script.sh
还是只是curl
?
您还可以将脚本的第一行(如果您使用 bash)从 更改为#!/bin/bash
(#/bin/bash -x
这将从 bash 生成调试输出)。
无论如何,正如@derfK 在他的评论中所说,检查用户电子邮件是否有错误(脚本调试也将发送到用户电子邮件)。您可以更改 cron 用于发送MAILTO=<email>
规则行之前的消息的电子邮件。