我将尝试使用crontab在每晚特定时间运行一个php文件,但是由于目录权限的原因,该php文件需要以www-data身份运行。为了以www-data身份运行,我正在使用root crontab并在其中更改用户,如下所示:
* 20 * * * sudo -u www-data /usr/bin/env TERM=xterm /path/to/dailyProc.sh
dailyProc的内容如下:today=`date +"%d%m%y"`
year=`date +"%y"`
dm=`date +"%m%d"`
`tar -zxf /path/to/input/$today.tgz -C /path/to/output`
echo "starting data proc"
`/usr/bin/php5 -f /path/to/dataproc.php date=$dm year=$year`
echo "data proc done"
dailyProc.sh中的所有其他命令都有效,但php无法运行。该php使用输出缓冲区并将其写入文件,在命令行调用时可以正常工作,但在通过cron调用时无法工作。
我也可以使用以下命令从命令行以www-data
身份运行dailyProc.sh:
sudo -u www-data dailyProc.sh
一切都按预期工作。
是否有任何原因导致我无法在crontab中运行dailyProc.sh中的此php文件,而其中的其他所有内容均可正常工作?
#!/bin/bash
吗? - Alexcrontab -l
以确保您的 crontab 已注册。此外,请检查日志,可能位于/var/log/syslog
。 - John Cartwrightsudo contab -e
来编辑 crontab。我读到过编辑etc/crontab
不是一个好主意,因为系统可能会覆盖它。 - Cob50nmdailyProc.sh
,确实是这样,但其中的 php 却没有被执行。 - Cob50nm/etc/crontab
。 - lxg