Cronjobs 不是由 www-data 运行的

Cronjobs 不是由 www-data 运行的

我正在研究Laravel 应用程序部署在 Kubernetes 集群上,我需要设置一个 cronjob 来运行 php /var/www/html/artisan schedule:run。

我在用着php:7.4-fpm-alpine图像。

以下脚本用于生成 cronjob:

#!/bin/sh

crontab -l > mycron

touch /var/cronlogs.txt

echo "* * * * * php /var/www/html/artisan schedule:run >> /var/cronlogs.txt 2>&1" >> mycron

crontab mycron

rm mycron

cronjob 运行正常,但我突然遇到一个问题,当 cronjob 执行某些 php artisan 命令时,它会使用 root 权限将日志写入“storage/logs”,从而拒绝 www-data 写入日志的请求。

我尝试将运行 cronjob 的用户更改为 www-data,但是当我这样做时,cronjob 不再运行。

我做了什么:

1- 我改变了“crontab -l > mycron“ 到 ”crontab -u www-data -l > mycron“ 和 ”crontab 复制代码“ 到 ”crontab -u www-data mycron“在剧本中。

2- 我改变了所有权/var/spool/cron/crontabs/www 数据到 www-data:www-data

3-我运行了 crond 命令。

我运行 crond 命令时没有错误,但作业没有启动。

/var/spool/cron/crontabs/root 中的 cronjob 运行良好 - 但日志文件问题不断改变。

/var/spool/cron/crontabs/www-data 中的 cronjob 不起作用。

如何使 cronjobs 由 www-data 运行?如果这不是解决方案,如何防止 php artisan 命令由 root 用户写入日志?

相关内容