我在 crontab 中有一个 Amazon Linux AMI:
0 7 * * 1 root /usr/bin/wget -q http://localhost/digest_weekly.php -O - >> /var/log/digest_weekly.log
Run Code Online (Sandbox Code Playgroud)
这会在digest_weekly.php每周一早上 7 点调用脚本。该脚本从数据库中收集一些数据并向每个用户发送一封电子邮件。它返回它发送电子邮件的所有电子邮件地址的列表。今天它必须发送 2608 封电子邮件。该脚本需要一段时间才能执行,但我在日志中看不到超时错误。
问题是邮件每 15 分钟再次发送一次。/var/log/digest_weekly.log是空的,所以我猜这项工作没有完成,并且在给它一些时间后,cron 以某种方式再次启动它。我在 Apache 访问日志中看到了这一点:
127.0.0.1 - - [23/May/2016:07:00:01 +0000] "GET /digest_weekly.php HTTP/1.1" 200 70941 "-" "Wget/1.16.1 (linux-gnu)"
127.0.0.1 - - [23/May/2016:07:15:02 +0000] "GET /digest_weekly.php HTTP/1.1" 200 70941 "-" "Wget/1.16.1 (linux-gnu)"
127.0.0.1 - - [23/May/2016:07:30:04 +0000] "GET /digest_weekly.php HTTP/1.1" 200 70917 "-" "Wget/1.16.1 (linux-gnu)"
Run Code Online (Sandbox Code Playgroud)
但在/var/log/cron我只能看到一行:
May 30 07:00:01 ip-172-31-8-62 …Run Code Online (Sandbox Code Playgroud)