Definitely something is missing !! ;-)
Look. You use the cron job on your server to trigger artisan scheduler to run - ideally every minute.
ok, clear so far? The scheduler runs once per minute.
Then in the app/Console/Kernel.php schedule method you list commands that you want the scheduler to check. So each time the scheduler is fired (once per minute) it goes through the schedule() method and starts any command or function that matches the truth test for the desired interval
eg
protected function schedule(Schedule $schedule)
{
$schedule->command('inspire')->hourly();
$schedule->command('auth:clear-resets')->daily();
}
So this fires the inspire command every hour and clears password resets at midnight every day.
In both cases, the command runs until its finished and the scheduler then checks the next command.
If any command takes more than a minute then there is a problem. Suppose 'inspire took two minutes to run. When the scheduler got to the second command it would no longer be midnight (but say 00:02) and not pass the test and be skipped over.
Back to your question, if you say everyMinute() then the command always be truthy and will always run - but only when the scheduler has been fired.
If you said ->everyTenMinutes(); then the command is run only when the minutes are 00,10,20,30 etc