我的 LAMP 已设置为正常工作,user:www-data
并且所有文件和文件夹均使用该权限创建。
我已以 user@ubuntu 身份设置了 crontab。
所以我这样做crontab -e
并使用了这个命令:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
基本上,该命令只是在指定位置创建缓存文件(没有问题),但是该缓存文件是使用用户创建的:用户权限而不是user:www-data
权限。
我怎样才能让它默认创建具有user:www-data
权限的文件?
我无法去,chown
每次都重新创建文件。
谢谢。
答案1
您还可以使用参数运行 crontab-u
来为特定用户编辑 crontab:
sudo crontab -u www-data -e
答案2
您可以将您的条目写入系统 crontab /etc/crontab
,它接受一个额外的参数来指定以哪个用户身份运行(通常是 root ,但可以是 www-data)。
你的线路将变成:
*/5 * * * * www-data php /var/www/public/voto_m/artisan top >/dev/null 2>&1
或者你可以使用以下命令编辑用户 www-data 的 crontab su
:
sudo su -c "crontab -e" www-data -s /bin/bash
答案3
要以用户 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
答案4
重要:www-data 用户没有执行权限。
因此:您需要 su 并添加 -s 以使用 shell 以 www-data 用户身份运行该命令。
Laravel 示例
* * * * * su www-data -s /bin/bash -c "/path_your_project/artisan schedule:run"