我的服务器在Ubuntu 14.04和Nginx上运行.我的问题与Cron有关,我想用文件启动它(crontab) – cron.txt,其内容:
* * * * * /usr/bin/PHP /var/www/html/test.PHP >> /var/log/cron.log
如果我使用命令运行它:crontab /var/www/html/cron.txt,它运行正常,脚本test.PHP正在执行.但是当我这样做但使用PHP脚本(通过浏览器执行):exec(‘crontab /var/www/html/cron.txt’);,它不起作用.
通过命令检查当前的cronjob:crontab -l -u www-data,显示文件中的行,但Cron不执行其工作.也许这与一些许可问题有关?因为它只能作为root执行.有没有办法迫使Cron做www-data的任务呢?
最佳答案
我不清楚你想要实现什么目标.据我所知,你需要执行一个作为www-data用户的cron作业.通常(强烈推荐)www-data用户无权访问shell.但是您可以将cron任务作为www-data执行,将您的任务放在root cron中,如下所示:
* * * * * su www-data -s /bin/bash -c "/usr/bin/PHP /YOUR_PATH/task.PHP"
这也是一种干净的方式,因为您将系统的所有cron作业集中在一个文件中,但每个任务都以所需的用户身份运行(具有适当的权限和属性).
您可以更改* * * *参数以调整作业的计划.在我的例子中,它每隔一分钟运行一次.
希望能帮助到你.