定时任务在web服务器中经常用到,对于初学者来说,很容易因细节处理的不当,导致服务器出现文件权限异常。其实,异常的原因多半是由于“web执行用户”和“定时任务的执行用户”不同导致的。
今天在给自己的博客部署定时任务时候,顺便整理一下,操作步骤如下:
1、查看我的服务器用户,最简单的方式是“ls -l”查看web日志文件的所有者,我的web用户是www-data
-rw-r--r-- 1 www-data www-data 3369 May 11 22:19 sql-2022-05-11.log
因此,我在添加定时任务时候,也自然的把定时任务的执行用户设置为www-data。
2、编辑 /etc/crontab 文件,在文件中加入自己的定时任务,我的任务是每分钟执行“php artisan schedule:run”命令
* * * * * www-data cd /var/www/larastu && php artisan schedule:run >> /var/log/crontab.log 2>&1
由于www-data用户默认是不能执行bash相关操作的,因此需要修改 /etc/passwd 文件中 www-data 所在行,将“/usr/sbin/nologin” 修改为 “/bin/bash” 即可