在 Linux 上给 Laravel 设置定时任务,通常是通过 Linux 的 crontab + Laravel 的 Task Scheduling 来实现的。下面一步步说明。
文件路径:
app/Console/Kernel.php
在 schedule() 方法中定义任务,例如:
protected function schedule(Schedule $schedule)
{
// 每天凌晨执行
$schedule->command('inspire')->daily();
// 每分钟执行
$schedule->command('email:send')->everyMinute();
// 自定义时间
$schedule->call(function () {
// 代码逻辑
})->dailyAt('02:00');
}
常用方法:
->everyMinute()->hourly()->daily()->weekly()->monthly()->cron('0 0 * * *')crontab -e
* * * * * cd /path/to/your/laravel && php artisan schedule:run >> /dev/null 2>&1
说明:
* * * * *:每分钟触发一次cd /path/to/your/laravel:进入项目目录php artisan schedule:run:Laravel 自己判断该执行哪些任务/dev/null 2>&1:不输出日志(可选)✅ 只需要这一条 crontab,不需要每个任务都写一条
which php
例如:
* * * * * cd /www/laravel && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
确保:
storage 和 bootstrap/cache 可写crontab -l
php artisan schedule:run
tail -f storage/logs/laravel.log
❌ 每个任务都写一条 crontab
✅ 只用 schedule:run
❌ 路径写错
✅ 使用绝对路径
❌ 使用 www 用户但 crontab 是 root
✅ 统一用户
如果你愿意,可以告诉我:
我可以直接帮你写完整配置。