CronTab用于日志记录在Laravel中不起作用

时间:2018-10-03 00:07:17

标签: laravel taskscheduler

我正在测试一个简单的logger命令以放入crontab中。当我运行 php artisan schedule:run 命令时,首先可以得到所需的输出。但是用于运行everyMinute()的crontab无法正常工作。

我的Crontab条目为 * * * * * cd / Users / bikrambhandari / My Documents / Laravel Projects / Migration / artisan && php artisan schedule:run >> / dev / null 2>&1 < / p>

我的调度代码如下

protected function schedule(Schedule $schedule)
    {
        $schedule->command('visa:expire')
            ->everyMinute();
    }

目前,命令 php artisan visa:expire 代码将在日志文件中写一行。我在Mac上。并希望每分钟编写一次日志文件。

1 个答案:

答案 0 :(得分:0)

假设您的调度代码很好,我想您的cron作业由于CD所指向的目录路径中的空格而无法正确调用。

更改您的crontab行:

 * * * * * cd "/Users/bikrambhandari/My Documents/Laravel Projects/Migration/artisan" && php artisan schedule:run >> "/Users/bikrambhandari/My Documents/crontab.log.txt" 2>>"/Users/bikrambhandari/My Documents/crontab-error.log.txt"

引号将使空格不能用作参数定界符,因此cd应该成功,然后php开始。我将输出的重定向从/dev/null更改为文件-在这里您可以查看实际的schedule函数是否存在问题。知道一切正常后,将重定向更改回/dev/null

编辑-

再次更改了重定向,以简化重定向并生成单独的日志文件。

我还要添加一行以仅触摸文件,以便您知道cron确实在运行-

 * * * * * touch /tmp/cron_is_running