欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

crontab 指定非root用户运行脚本

程序员文章站 2022-05-10 09:39:33
...


crontab 脚本默认是root用户运行,在Laravel项目中,如果运行PHP-FPM的用户是非root, 比如www ,而定时任务又是root用户执行的,,会导致生成的laravel日志文件属于root,进而www用户无权限写入日志。

crontab常用命令

crontab -u //指定某个用户的cron服务
crontab -l //列出某个用户的cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务

以上命令默认的用户是root,如果想指定某个用户,方式如下

crontab -u www -e //编辑www用户的命令
crontab -u www -l //查看www用户的命令列表

指定非root用户

如果直接编辑www的crontab命令,会发现其中的命令并没有执行,例如:

* * * * * /usr/bin/php /{laravel项目根目录}/artisan schedule:run >> /dev/null 2>&1

发现并不执行,而放在crontab -e中的却可以正常执行。

此时查看/var/logs/cron日志发现如下报错信息:

Apr 11 13:15:01 izuf60div2wtc0k655uschz CROND[2174]: (www) CMD (/usr/bin/php /{laravel项目根目录}/artisan schedule:run >> /dev/null 2>&1)
Apr 11 13:15:01 izuf60div2wtc0k655uschz CROND[2174]: (CRON) ERROR chdir failed (/home/www): No such file or directory

发现是由于指定了www用户的定时任务后,运行crontab命令失败了。原因是:找不到/home/www目录

/home/www创建对应目录后,命令正常执行, 日志权限问题也随之解决。

(完)

参考:

https://blog.csdn.net/cuiliwu/article/details/82623815

https://learnku.com/articles/6775/about-laravel-log-permissions