Spiega un'espressione cron
Un'espressione cron descrive quando un job deve eseguirsi con cinque o sei campi criptici — minuti, ore, giorno, mese, giorno della settimana — difficili da leggere senza pratica. Questo strumento del KIT traduce l'espressione in una frase in italiano chiara, così capisci subito quando scatterà davvero.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Perché un asterisco può costare un incidente in produzione
'0 3 * * 1-5' sembra innocuo finché non lo leggi bene: significa 'ogni giorno feriale alle 3 di notte', ma uno scambio tra il campo dei giorni del mese e quello dei giorni della settimana — o un asterisco al posto sbagliato — trasforma un job pensato per la notte in uno che parte ogni minuto. Leggere l'espressione in una frase, non campo per campo, è il modo più rapido per accorgersene prima del deploy, non dopo.
Cosa significa ogni campo, senza doverli contare a mano
Minuti, ore, giorno del mese, mese, giorno della settimana: cinque posizioni fisse, dove un asterisco vale 'ogni valore' e un numero o un intervallo restringe la regola. Alcuni sistemi aggiungono un sesto campo per i secondi, altri accettano scorciatoie come @daily o @hourly. Questo strumento riconosce entrambi i formati e restituisce sempre la spiegazione in linguaggio naturale, non l'elenco tecnico dei campi.
Ereditare un cron senza documentazione
Capita spesso di trovare un job schedulato scritto da chi non lavora più nel team, senza una riga di commento a spiegarlo: incollare l'espressione qui è più veloce che decifrarla a memoria o cercare la sintassi cron su internet ogni volta, ed evita di modificare un orario di produzione senza sapere davvero cosa si sta cambiando. Capita anche il contrario: prima di copiare un'espressione trovata in un forum o in un tutorial dentro il proprio progetto, conviene leggerla in italiano e assicurarsi che faccia esattamente quello che serve, non qualcosa di simile.
Per documentare, via API
Generare automaticamente la descrizione di decine di job schedulati per un README o un pannello di controllo interno è un caso comune: l'API, a $0.002 a richiesta, restituisce la stessa spiegazione in italiano pronta da inserire nella documentazione, senza doverla scrivere a mano job per job. Per un controllo singolo mentre scrivi il cron, la pagina nel browser resta gratis e non richiede alcuna chiamata a pagamento.
Casi d'uso
Verificare un job ereditato prima di toccarlo
Alessandro Ferrari trova nel server un cron '*/15 8-19 * * 1-6' senza commenti: scopre che gira ogni quarto d'ora, dalle 8 alle 19, dal lunedì al sabato, prima di decidere se modificarlo.
Documentare i job schedulati di un progetto
Un team genera via API la spiegazione in italiano di tutti i cron definiti nel progetto, per inserirla nel README senza doverla scrivere a mano una per una.
Evitare un deploy con l'orario sbagliato
Prima di attivare un backup notturno, un amministratore controlla che '0 2 * * *' significhi davvero 'ogni giorno alle 2 di notte' e non qualcos'altro, per non scoprirlo alle tre del mattino sbagliato.
Domande frequenti
Riconosce anche le espressioni con i secondi, a sei campi?
Sì, riconosce sia il formato classico a cinque campi sia quello esteso a sei con i secondi, e spiega correttamente entrambi.
Capisce scorciatoie come @daily o @hourly?
Sì, le sintassi abbreviate più comuni vengono riconosciute e spiegate in una frase, come se fossero scritte per esteso.
Tiene conto del fuso orario del server?
La spiegazione descrive la regola così com'è scritta; il fuso orario dipende da come è configurato il sistema che esegue il cron, non dall'espressione in sé — vale la pena verificarlo separatamente.
Posso generare la spiegazione per molti cron insieme?
Sì, via API a $0.002 a richiesta: comodo per documentare in automatico tutti i job schedulati di un progetto.
È gratis nel browser?
Sì, senza limiti né registrazione: incolli l'espressione e leggi la spiegazione.
Cosa succede se l'espressione è scritta male?
Lo strumento segnala che il formato non è valido invece di restituire una spiegazione sbagliata, così te ne accorgi subito.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/cron-explain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/dev/cron-explain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/cron-explain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/cron-explain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/cron-explain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"items": [
"valor-1",
"valor-2"
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.cron_explain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |