我有一个每天执行一次的 cron 作业:
0 20 * * * /usr/bin/wget --timeout=10800 -O /home/File.txt http://www.site.com/script.php
到目前为止一切都很好,但最近我发现脚本只是停止了。
我查看了/var/log/httpd/error_log
(这是一个 CentOS),发现了这个:
[Thu Nov 21 21:30:32 2012] [notice] child pid 8985 exit signal Segmentation fault (11)
现在,这意味着两件事:脚本成功运行了大约一个半小时,但随后发生了分段错误。通常,脚本大约需要 2 小时才能完成,因此需要大约半个小时才能完成它的工作。
现在,即使我打开了error_reporting,我也找不到导致脚本停止的错误。
我想知道,有没有办法让我找到导致脚本终止的潜在错误行?
我确实尝试了谷歌和SO,ofc,并试图通过这样做来实现与SO上这个问题相同的结果:
0 20 * * * /usr/bin/wget --timeout=10800 -O /home/File.txt http://www.site.com/script.php 2>1& >> /home/log.txt
但日志文件为空。我不太擅长管理 linux,所以可能是我的命令在这个 cronjob 中是错误的,所以请引导我正确。
试试这个
0 20 * * * /usr/bin/wget --timeout=10800
-O /home/File.txt http://www.site.com/script.php >> /home/log.txt 2>&1
2>&1部分告诉将STDERR发送到与STDOUT相同的位置。
Cron 将命令的输出发送到执行该命令的用户的电子邮件。
要使此系统正常工作,您必须安装邮件守护程序,例如 exim 或 postfix。
另外,您要求 wget 在/home/目录中写入一个文件,我认为是非 root,这意味着您不能这样做。如果你是根,你不应该这样做。