Schedule
Schedule on the Laravel tab lists the tasks from the app’s scheduler as a table, soonest first:
| Column | Shows |
|---|---|
| in | Time until the next run: now, 45s, 12m, 3h 20m |
| next run | Date and time of the next run |
| expression | The cron expression |
| task | The command or job, or the description you gave it |
| flags | no overlap, one server, background, in maintenance: the task’s withoutOverlapping(), onOneServer(), runInBackground() and evenInMaintenanceMode() |
| timezone | The task’s timezone |
The tasks are read from the booted app, so they match what schedule:run would do on that server.
| Key | Action |
|---|---|
enter |
The task in full |
t |
Run the task now |
r |
Read the schedule again. The cursor stays on its row |
Running a task now
Section titled “Running a task now”t runs the task under the cursor once, the way the scheduler runs it, with:
php artisan schedule:test --no-interaction --name='<task>'A confirmation shows the exact command first. The output streams live, and the task’s schedule does not change.
The task is found by its name: a command by its command line without php artisan, an exec task by its command, a job or closure by its description. So:
- a closure or job without a
->description()cannot be run from here. The screen asks you to give it one; - two tasks with the same name are refused, since
schedule:testcannot tell them apart. Give one of them a->description().
schedule:test --name needs Laravel 9 or newer. Before that, artisan refuses the option, so nothing runs by mistake.