Write the Code. Change the World.

5月 08

官方文档很美好,执行 * * * * * 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 

这样就美美解决了。

https://www.cnblogs.com/lamp01/p/6864258.html