官方文档很美好,执行 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
就可以启动每分钟调用一次的调度了。
但是,你会发现该调度只执行一次。
然后你使用 crontab -l
发现空空如也。
这个时候怎么办呢。
操作一
小伙伴也有方法。说 php 路径,文件路径没写成绝对路径,需要有这样的操作。
# 找到 php 的位置
whereis php
# pwd 找到项目的位置
# 然后使用绝对路径执行
* * * * * /usr/bin/php7.3 /home/vagrant/code/work/zeipan.com/artisan schedule:run >> /dev/null 2>&1
但是,依然不行。当然也有人行了。
https://learnku.com/laravel/t/5032/ubuntu1604crontab-timed-tasks-are-not-held
操作二
环境变量等问题
echo $PATH;
# 或
env > /tmp/env.output
cat /tmp/env.output
# 找到其中的 PATH 的值。
这样操作,感觉不相符。小伙伴也说了,使用了绝对路径可以不用管环境变量的。
https://learnku.com/articles/18697
个人测试有效的方法
依然按照操作一操作。只是,需要先生成一个 cron.txt 文件。在这个文件中,放入之前的命令。然后执行 crontab cron.txt
即可。
vim cron.txt
# 添加内容
* * * * * /usr/bin/php7.3 /home/vagrant/code/work/zeipan.com/artisan schedule:run >> /dev/null 2>&1
# :wq 保存退出
crontab cron.txt
# 查看任务
crontab -l
# 停止所有定时任务
crontab -r
这样就美美解决了。