Checklist UTC per cron su 5 piattaforme
Come verificare che un job schedulato sia davvero morto e non solo in UTC, su launchd, Cloud Scheduler, Cloud Run, Vercel e Nightbox.
Il cron sembrava morto. Era solo l'ora.
Ho 69 job schedulati su 5 piattaforme. Il 12 giugno 2026 uno di questi, il reel-content-brain, non girava quando me lo aspettavo. Nessun commit, nessun file in coda.
Ho aperto Cloud Scheduler. Il job era presente, attivo, senza errori. Poi ho fatto date -u.
La risposta: 12:00:07 UTC. La macchina mostrava 14:00 CEST. Il cron era in UTC. Il job era girato esattamente quando doveva.
Il check in 3 passaggi
date -usulla macchina di sviluppo.- Confronta con il timestamp dell'ultimo run nella piattaforma di destinazione.
- Se combaciano ma il job non ha girato: problema reale. Se non combaciano: è solo l'ora.
Come si vede il fuso su ogni piattaforma
launchd (macOS): StartCalendarInterval usa l'ora locale della macchina. In estate (CEST) = UTC+2. Un job alle 06:00 launchd gira alle 04:00 UTC.
Cloud Scheduler (Google Cloud): espressioni cron nel timezone configurato alla creazione. Default: UTC. Verifica sempre con date -u.
Cloud Run Jobs: il trigger viene da Cloud Scheduler. I log usano UTC.
Vercel Cron: UTC sempre. Non configurabile.
Nightbox (host GPU): dipende dalla configurazione del sistema. Controlla con timedatectl.
L'errore che si fa più spesso
Dichiarare morto un cron alle 14:00 locali quando è schedulato alle 12:00 UTC. Il job non è ancora partito.
Ho 69 job schedulati. Da quel giugno 2026: zero false morti per fuso orario.