当前位置: 首页>>技术教程>>正文


如何以用户www-data的身份运行crontab?

,

问题描述

我的LAMP被设置为user:www-data,并且所有文件和文件夹都具有该权限。

我已经将crontab设置为user @ ubuntu。

所以我做crontab -e并使用此命令:

*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1

基本上,该命令仅在指定的位置创建缓存文件(对此没有问题),但是该缓存文件是使用user:user权限而非user:www-data权限创建的。

如何使它默认情况下创建具有user:www-data权限的文件?每次重新创建文件时,我都无法使用chown

谢谢。

最佳方法

您可以将条目写到系统crontab /etc/crontab中,该条目带有一个附加参数,用于指定要以其身份运行的用户(通常是root,但可以是www-data)。

*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1

或者,您可以使用su编辑用户www-data的crontab:

sudo su -c "crontab -e" www-data

次佳方法

您也可以使用-u参数运行crontab来为特定用户编辑crontab:

sudo crontab -u www-data -e

第三种方法

要以用户www-data的身份运行crontab,可以使用以下命令:

crontab -u www-data -e

然后编写一行,例如每15分钟运行一个php文件:

*/15  *  *  *  * php -f /path_to_cron/cron.php

保存时,编辑器会询问您:

File Name to Write: /tmp/crontab.HMpG7V 

保存在那里,无后顾之忧。 crontab -e在/tmp中打开一个文件,而不是实际的crontab,以便它可以检查新的crontab中是否有错误,并防止您用这些错误覆盖实际的crontab。如果没有错误,那么您的实际crontab将被更新。如果crontab -e只是直接写到您的实际crontab,那么您将有可能浪费掉整个crontab。

要验证您的cronjob是否运行,您可以检查cron日志。通常在/var/log/cron.log中或执行以下命令:

crontab -u www-data -l

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11480.html,未经允许,请勿转载。