问题描述
我的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