A scheduled task on a second server runs twice

The scheduler runs on every host that has a cron entry, which is correct behaviour and is not what anybody wants for a nightly export.

$schedule->command('export:catalogue')
    ->dailyAt('02:00')
    ->onOneServer()          // requires a shared cache lock
    ->withoutOverlapping(120);

// onOneServer needs a cache driver shared between hosts —
// redis or memcached. with the file or array driver it
// silently does nothing, and both hosts run the task.

Silently doing nothing with the wrong cache driver is the failure that makes this worth writing down, because the configuration reads as if the problem is solved. withoutOverlapping is a different guarantee — one at a time on one host — and the two are frequently confused; a task that must be unique across a fleet and must not overlap itself needs both.