我在运行Ubuntu 13.10的本地服务器上运行cron作业,并希望创建所执行作业的日志。我可以访问主日志文件syslog,它显示cron作业是否已运行或有错误。
这是我的cronjob(我在测试时每分钟运行一次,脚本在几秒钟内完成)
* * * * * /usr/bin/php -f /home/[usr]/web/X/app/application.php &>> /home/[usr]/Maildir/geocode.log 2>&1 # JOB_ID_2
在我的application.php文件中,我有几个输出变量和执行查询结果的回声:
echo "STARTING CRON @ ".date("m-d-Y H:i:s")."\r\n";
echo count($properties) . " properties from query"."\r\n";
如果我从命令行运行此文件,则文件正确执行并显示输出。在查找了有关cron日志的其他问题之后,我想我需要在cron作业的后半部分输出日志文件:
>> /home/[usr]/Maildir/geocode.log 2>&1
这是不正确的?如何保存和记录我的php文件的输出?我的文件从数据库中选择一些对象并对它们执行操作。我想输出最初工作的号码,成功完成的号码以及任何错误。现在没有输出任何内容,但我知道cron正在运行,因为它连接的数据库正在正确更新。
编辑: 我研究了一些,并认为2>& 1会将stderr传递给stdout,因为我想要所有这些信息,但看起来这样可以防止写入任何内容。使用:
/usr/bin/php -f /home/[usr]/web/X/app/application.php >> /home/[usr]/Maildir/geocode.log
将我期望的所有输出添加到日志文件中,但我不确定错误会发生什么,因为它现在运行正常。如果其他人想要添加关于创建日志文件的任何内容,并且在我们想要保留stderr和stdout的情况下应该使用2>& 1,我将保持打开状态。