(操作系统是 FreeBSD 8.1)
昨天我以 root 身份向 crontab 添加了 2 行:
0 7 * * * curl --silent http://username:pass@dev.mydomain.tld/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1
0 8 * * * curl --silent http://username:pass@dev.mydomain.tld/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1
Run Code Online (Sandbox Code Playgroud)
以 root 身份直接从 shell 执行命令工作正常。它只是做一些事情,并发送一些电子邮件。第二次运行不应发送任何电子邮件,这是由脚本处理的。因此,第二行只是为了我的测试乐趣,确保第二次运行不会发送相同的电子邮件。
今天早上我在早上 7 点和早上 8 点等待电子邮件 - 但没有。
cron日志有以下内容告诉我
Feb 8 07:00:00 webserver /usr/sbin/cron[50878]: (root) CMD ( /usr/local/bin/bsdsar_gather)
Feb 8 07:00:00 webserver /usr/sbin/cron[50881]: (root) CMD (newsyslog)
Feb 8 07:00:00 webserver /usr/sbin/cron[50882]: (root) CMD (/usr/libexec/atrun)
Feb 8 07:00:00 webserver /usr/sbin/cron[50883]: (operator) CMD (/usr/libexec/save-entropy)
Feb 8 07:00:00 webserver /usr/sbin/cron[50886]: (root) CMD (curl --silent http://username:pass@dev.mydomain.tld/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1)
[...]
Feb 8 08:00:00 webserver /usr/sbin/cron[51147]: (root) CMD ( /usr/local/bin/bsdsar_gather)
Feb 8 08:00:00 webserver /usr/sbin/cron[51149]: (root) CMD (newsyslog)
Feb 8 08:00:00 webserver /usr/sbin/cron[51150]: (operator) CMD (/usr/libexec/save-entropy)
Feb 8 08:00:00 webserver /usr/sbin/cron[51151]: (root) CMD (/usr/libexec/atrun)
Feb 8 08:00:00 webserver /usr/sbin/cron[51152]: (root) CMD (curl --silent http://username:pass@dev.mydomain.tld/cron/execute/process/verbose/true >>/home/www/dev_mydomain_tld/logs/cron_process.log 2>&1)
Run Code Online (Sandbox Code Playgroud)
也/home/www/dev_mydomain_tld/logs/cron_process.log显示没有变化,日期也没有变化。从 shell 运行更新它就好了。
curl 是否在cron 设置的路径中?您应该在脚本中设置 PATH 或使用 curl 的完整路径(即 /usr/local/bin/curl 或类似的)。
有关环境变量的详细信息,请查看crontab(5)。