的crontab:
* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F_%T").log 2>&1
手动运行时,会生成预期的日志文件:
$ php /path/to/script.php > /tmp/log/cron-$(date "+%F_%T").log
...
$ ls /tmp/log/
cron-2014-12-17_20:04:17.log
但是当它从cron运行时,没有记录保存到日志文件的脚本运行。
我错过了什么?
更新
好吧,这似乎是一个许可问题。如果我创建一个日志文件和chmod 777,cron将写入此文件。但是cron不会写入新创建的日期文件。我怎么能允许这个?
# This works, but does not allow dynamic dates
* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron.log 2>&1
# This does not work
* * * * * /usr/bin/php /path/to/script.php > /tmp/log/cron-$(date "+%F_%T").log 2>&1
/tmp/log
归apache
所有,但cron的启动时间为root
。
你推荐什么?
答案 0 :(得分:0)
运行 $哪个php 找出你的PHP安装位置。然后检查root是否在路径中有它。
您可以使用自己的crontab安装它 $ crontab -e
这比以root身份运行要好得多,原因很多,其中最重要的是,如果你的脚本具有vulernability,它将比你的root用户拥有更少的访问权限。
答案 1 :(得分:0)
是&符号吗?您可以使用>将输出重定向到日志。运营商。我的猜测是&将进程发送到后台,然后没有任何内容用于>运算符重定向到您的日志。