温馨提示×

linux laravel怎么用定时任务

小樊
50
2026-10-15 22:18:18
栏目: 智能运维

在 Linux 上使用 Laravel 定时任务,核心就是利用 Linux 的 crontab 去每分钟调用 Laravel 的 任务调度器,然后由 Laravel 自己管理具体任务。

下面一步一步来:


一、Laravel 中定义定时任务

1. 创建调度任务

可以在 routes/console.php 或 app/Console/Kernel.php 中定义。

方式一:routes/console.php(简单)

use Illuminate\Support\Facades\Schedule;

Schedule::command('inspire')->hourly();

方式二:app/Console/Kernel.php(推荐)

protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->dailyAt('09:00');
    $schedule->call(function () {
        // 自定义逻辑
    })->everyFiveMinutes();
}

二、Linux 配置 crontab(关键)

1. 编辑 crontab

crontab -e

2. 添加这一行(非常重要)

* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1

示例:

* * * * * cd /var/www/laravel && php artisan schedule:run >> /dev/null 2>&1

✅ 含义:

  • 每分钟执行一次
  • Laravel 判断哪些任务该跑

三、常用调度方法

->everyMinute();
->everyFiveMinutes();
->hourly();
->daily();
->dailyAt('13:30');
->weekly();
->monthly();
->cron('0 0 * * 0');

四、查看和调试

1. 手动运行

php artisan schedule:run

2. 查看已定义任务

php artisan schedule:list

3. 查看 crontab

crontab -l

五、常见问题

❌ 任务不执行

检查:

  • PHP 路径是否正确(用 which php)
  • 项目路径是否正确
  • crontab 用户是否有权限
  • 日志权限

✅ 推荐写法(指定 php 路径):

* * * * * /usr/bin/php /var/www/laravel/artisan schedule:run >> /dev/null 2>&1

六、Supervisor(可选,适合队列)

如果是 队列任务,建议配合 supervisor 使用。


如果你愿意,可以告诉我:

  • Laravel 版本
  • 想定时做什么(发邮件 / 清缓存 / 跑脚本)
  • 用的是 Ubuntu 还是 CentOS

我可以给你定制示例。

0 踩