laravel 配置crontab定時任務三步走:
1、env:當Cron
無法生效時,可能是Cron
執行環境變量不正確引起的;確保cron服務開啓;
#環境變量配置
>env > /tmp/env.output
#cron狀態查看
>service cron status
#cron服務開啓
>service cron start
#查看cron命令配置
>vim /var/spool/cron/crontabs/root
#查看cron命令日誌
>tail -f /var/log/cron.log
#cron服務重啓
>sudo service cron restart
打開/tmp/env.output
文件,將PATH
字段整行添加至corntab
文件頂部,corntab
文件在/var/spool/cron
目錄下。
2、crontab命令創建:
#查看已創建的cron命令
>crontab -l
# m h dom mon dow command
* * * * * /usr/bin/php /var/www/dev/artisan schedule:run >> /dev/null 2>&1
#查看php路徑
>whereis php
php: /usr/bin/php7.2 /usr/bin/php /usr/lib/php /etc/php /usr/include/php /usr/share/php7.2-gd /usr/share/php7.2-json /usr/share/php7.2-intl /usr/share/php /usr/share/php7.2-xml /usr/share/php7.2-common /usr/share/php7.2-mbstring /usr/share/php7.2-opcache /usr/share/php7.2-sqlite3 /usr/share/php7.2-curl /usr/share/php7.2-readline /usr/share/php7.2-pgsql /usr/share/php7.2-zip /usr/share/php7.2-mysql /usr/share/php7.2-bcmath /usr/share/man/man1/php.1.gz
#添加cron命令
#小坑注:cron命令之後必須有回車換行
#小坑注:php路徑必須爲絕對路徑,不能爲相對路徑
>crontab -e
# m h dom mon dow command
* * * * * /usr/bin/php /var/www/dev/artisan schedule:run >> /dev/null 2>&1
2.1、小坑注:
通過 crontab -e
命令創建的 Cron
是屬於 root
用戶,如果定時任務在實行時主動寫入日誌或者遇到異常未捕捉,會創建 root 權限的日誌文件,最終會導致 php-fpm
的 www
賬號無法寫入。
因此需要在創建 cron 的時候指定用戶:
#個人管理的系統中 php-fpm 執行用戶都是 www,請根據自己的實際情況調整代碼。
>crontab -u www -e
3、容器中執行任務開啓命令:
>artisan schedule:run