我正在测试一个简单的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上。并希望每分钟编写一次日志文件。
答案 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