php crontab 用户,如何以用户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

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值