【Laravel】サーバ再起動でcronタスクスケジュールが実行されなくなった

状況

サーバのcronを使ってschedule:runを実行させてjobを処理させていたんですが、ある時サーバを再起動したらjobが実行されなくなった。

そんな時に試してみる事

サーバ側の確認

crontabが設定されているか確認

cronが実行されているか確認

cron再起動

他に、cronが動かない原因として権限周りが結構関係している場合が多いが、今回は今まで動いていたので関係がない。

Laravel側の確認

直接schedule:runを実行してみる

今回このコマンドで以下のメッセージが表示された

No scheduled commands are ready to run.

Kernel.php内のスケジュールが毎分以外の場合や条件付きでスケジュールされていて実行するものがない場合にこう表示されるようです。

今回、cron側もLaravel側も正常に動いてるっぽいが、スケジュールが実行されない。。。

最後にキャッシュクリアしてみる。

環境によっては、以下のメッセージが表示されてクリアできない。

Failed to clear cache. Make sure you have the appropriate permissions.

これは、「storage/framework/cache/data」をクリアするコマンドなので、このディレクトリが存在しない場合、または、ファイルに対して権限がない場合に表示される。

今回はディレクトリは存在しているので、管理者権限で実行。

クリアできた。

キャッシュクリアした途端スケジュールが実行され始めた。今回は、結局キャッシュが悪さしてました。