Generatore di espressioni Cron

Genera espressioni cron visivamente con un costruttore passo dopo passo

Preset rapidi

Minuto

Ora

Giorno del mese

Mese

Giorno della settimana

Espressione cron

0 9 * * *

minute hour day(month) month day(week)

Cos'è un generatore di espressioni cron?

Un generatore di espressioni cron è uno strumento che costruisce stringhe di pianificazione cron tramite un'interfaccia visuale, senza richiedere di scriverle a mano. Le espressioni cron sono stringhe a cinque campi (minuto, ora, giorno del mese, mese, giorno della settimana) che definiscono quando deve essere eseguito un task ricorrente. Il formato risale al demone cron Unix originale del 1979 ed è oggi utilizzato in crontab, Kubernetes CronJobs, GitHub Actions, AWS EventBridge, Google Cloud Scheduler e decine di librerie di scheduling.

Scrivere espressioni cron a memoria è una fonte comune di bug. I cinque campi interagiscono in modi non ovvi: un valore di passo come */15 nel campo dei minuti produce esecuzioni a 0, 15, 30 e 45, mentre 5/15 parte dal minuto 5 e produce 5, 20, 35, 50. Combinare giorno del mese e giorno della settimana con valori non wildcard crea una condizione OR, non AND, il che sorprende anche gli sviluppatori più esperti. Un generatore visuale elimina questa ambiguità lasciandoti selezionare la pianificazione desiderata e producendo automaticamente la sintassi corretta.

Un generatore cron si differenzia da un parser cron. Un parser prende un'espressione esistente e la spiega in linguaggio naturale. Un generatore funziona nella direzione opposta: descrivi la pianificazione di cui hai bisogno e lo strumento produce la stringa cron corrispondente. Usa il generatore quando crei un nuovo job pianificato; usa il parser quando auditi o esegui il debug di quelli esistenti.

Perché usare questo generatore cron?

Costruire un'espressione cron a mano significa memorizzare l'ordine dei campi, i range di valori e le regole degli operatori. Un singolo campo fuori posto trasforma un job giornaliero in uno che viene eseguito ogni minuto. Questo generatore ti permette di scegliere la pianificazione visualmente e copiare il risultato con un clic.

🖱️
Costruttore di pianificazione visuale
Seleziona i valori di minuto, ora, giorno, mese e giorno della settimana da menu a tendina e interruttori. L'espressione cron si aggiorna in tempo reale ad ogni modifica. Nessun bisogno di memorizzare la sintassi.
🔒
Elaborazione con privacy garantita
L'intera generazione avviene nel browser. Nessun dato di pianificazione viene inviato a un server. Le tue espressioni cron e le configurazioni dei job rimangono sul tuo dispositivo.
Output immediato con anteprima
Visualizza l'espressione cron generata e un'anteprima delle prossime esecuzioni pianificate durante la costruzione. Verifica che la pianificazione sia corretta prima di copiarla nella tua configurazione.
📋
Nessun account richiesto
Apri la pagina e inizia a costruire. Nessun login, nessuna API key, nessuna installazione. Funziona su qualsiasi dispositivo con un browser moderno, incluso il mobile.

Casi d'uso del generatore cron

Frontend Developer
Crea espressioni cron per pannelli di amministrazione e interfacce di pianificazione. Genera la sintassi corretta per i selettori di pianificazione lato utente che memorizzano le stringhe cron nel database.
Backend Engineer
Crea espressioni cron per code di task come Celery, Sidekiq e Bull. Genera la stringa di pianificazione, verifica le prossime esecuzioni e incollala nella configurazione del job.
DevOps / SRE
Genera pianificazioni cron per Kubernetes CronJobs, pipeline CI/CD e automazione dell'infrastruttura. Crea espressioni per finestre di backup, rinnovo certificati e rotazione dei log senza errori di sintassi.
QA Engineer
Crea espressioni cron di test che si attivano a intervalli specifici per i test di integrazione. Genera pianificazioni che producono tempi di esecuzione prevedibili per validare il comportamento dello scheduler.
Data Engineer
Crea espressioni cron per i trigger di pipeline ETL e le pianificazioni di sincronizzazione dei dati. Genera pianificazioni non sovrapposte per le fasi di estrazione, trasformazione e caricamento con tempistiche precise.
Studente / Principiante
Impara la sintassi cron sperimentando con il costruttore visuale. Modifica i singoli campi e osserva come cambiano l'espressione e i tempi delle prossime esecuzioni. Acquisisci intuizione per wildcard, range e valori di passo.

Preset comuni per le pianificazioni cron

La tabella seguente elenca le espressioni cron per le pianificazioni più utilizzate. La maggior parte dei job in produzione rientra in uno di questi schemi. Modifica i singoli campi per adattarli alle tue esigenze temporali.

PianificazioneEspressioneUso tipico
Every minute* * * * *Health checks, queue polling
Every 5 minutes*/5 * * * *Metrics collection, cache refresh
Every 15 minutes*/15 * * * *API sync, dashboard updates
Every hour0 * * * *Log rotation, report generation
Every 6 hours0 */6 * * *Database backups, digest emails
Daily at midnight0 0 * * *Nightly batch jobs, cleanup scripts
Daily at 9 AM0 9 * * *Daily reports, notification digests
Weekdays at 9 AM0 9 * * 1-5Business-hours tasks, standup reminders
Every Monday at midnight0 0 * * 1Weekly reports, dependency updates
First of every month0 0 1 * *Billing runs, monthly aggregation
Every Sunday at 2:30 AM30 2 * * 0Full backups during low-traffic window
January 1st at midnight0 0 1 1 *Annual reports, license renewals

Elementi costitutivi di un'espressione cron

Ogni espressione cron ha esattamente cinque campi, letti da sinistra a destra. Ogni campo accetta valori e operatori specifici. Conoscere queste regole è sufficiente per scrivere qualsiasi pianificazione che potresti incontrare in produzione.

Schema dell'espressione cron a cinque campi:
*min0-59
*hour0-23
*day1-31
*month1-12
*weekday0-6

Quattro operatori controllano come vengono confrontati i valori all'interno di ogni campo. Puoi combinarli: 1-5/2 nel campo giorno della settimana significa lunedì, mercoledì, venerdì (range 1-5, passo di 2).

OperatoreSintassiEsempioProduce
Wildcard** (minute)Every minute
Lista,b,c1,15 (day)1st and 15th
Rangea-b9-17 (hour)9 AM through 5 PM
Step*/n*/10 (minute)Every 10 minutes
Range+Stepa-b/n10-30/5 (min)10, 15, 20, 25, 30

Esempi di codice

Come creare e registrare pianificazioni cron in Node.js, Python, Go e bash:

JavaScript (Node.js)
import { CronJob } from 'cron';

// Build a cron expression: every weekday at 9:00 AM
const expression = '0 9 * * 1-5';

const job = new CronJob(expression, () => {
  console.log('Running weekday morning task');
});
job.start();

// Programmatic expression building
function buildCron({ minute = '*', hour = '*', dom = '*', month = '*', dow = '*' }) {
  return `${minute} ${hour} ${dom} ${month} ${dow}`;
}

const expr = buildCron({ minute: '0', hour: '*/6', dow: '1-5' });
console.log(expr); // → "0 */6 * * 1-5"
Python
from crontab import CronTab

# Create a new cron job for the current user
cron = CronTab(user=True)

# Build a job: run backup.py every day at 2:30 AM
job = cron.new(command='python3 /home/user/backup.py')
job.setall('30 2 * * *')

print(job)           # → 30 2 * * * python3 /home/user/backup.py
print(job.is_valid()) # → True

# Schedule every 15 minutes on weekdays
job2 = cron.new(command='/usr/bin/sync-data')
job2.minute.every(15)
job2.dow.during('MON', 'FRI')

cron.write()  # Save to user's crontab

# Verify next run time
from croniter import croniter
from datetime import datetime

it = croniter('30 2 * * *', datetime.now())
print(it.get_next(datetime))  # → next 2:30 AM timestamp
Go
package main

import (
    "fmt"
    "strings"
    "github.com/robfig/cron/v3"
)

// BuildCron constructs a 5-field cron expression from parts
func BuildCron(minute, hour, dom, month, dow string) string {
    fields := []string{minute, hour, dom, month, dow}
    return strings.Join(fields, " ")
}

func main() {
    // Generate: every weekday at 9 AM
    expr := BuildCron("0", "9", "*", "*", "1-5")
    fmt.Println(expr) // → 0 9 * * 1-5

    // Validate and schedule it
    c := cron.New()
    _, err := c.AddFunc(expr, func() {
        fmt.Println("Running scheduled task")
    })
    if err != nil {
        fmt.Printf("Invalid expression: %v\n", err)
        return
    }
    c.Start()
}
Bash (crontab)
# Open the crontab editor to add a new job
crontab -e

# Add a cron job without opening an editor:
# Run cleanup.sh every Sunday at 3 AM
(crontab -l 2>/dev/null; echo "0 3 * * 0 /home/user/cleanup.sh") | crontab -

# Generate and add a job: every 10 minutes, log disk usage
EXPR="*/10 * * * *"
CMD="df -h >> /var/log/disk-usage.log"
(crontab -l 2>/dev/null; echo "$EXPR $CMD") | crontab -

# Verify the job was added
crontab -l | tail -1
# → */10 * * * * df -h >> /var/log/disk-usage.log

# Remove all cron jobs (use with caution)
# crontab -r

Domande frequenti

Qual è l'ordine corretto dei campi in un'espressione cron?
L'ordine standard a cinque campi è: minuto (0-59), ora (0-23), giorno del mese (1-31), mese (1-12), giorno della settimana (0-6, dove 0 è domenica). Questo ordine è definito da POSIX ed è utilizzato da crontab, Kubernetes, GitHub Actions e dalla maggior parte delle librerie cron. Alcuni strumenti come Quartz Scheduler aggiungono un campo per i secondi, portando a sei campi, ma il formato a cinque campi è il default universale.
Come genero un'espressione cron per 'ogni N minuti'?
Usa l'operatore di passo nel campo dei minuti: */N. Per ogni 5 minuti scrivi */5 * * * *. Per ogni 15 minuti scrivi */15 * * * *. L'operatore di passo divide uniformemente il range del campo. Nota che */7 non produce esecuzioni ogni 7 minuti oltre i confini dell'ora; produce esecuzioni ai minuti 0, 7, 14, 21, 28, 35, 42, 49, 56, poi si azzera a 0 all'inizio dell'ora successiva.
Posso generare un'espressione cron che venga eseguita l'ultimo giorno di ogni mese?
Il cron POSIX standard non ha un operatore 'ultimo giorno del mese'. Non puoi scrivere 0 0 L * * in crontab o nei Kubernetes CronJobs. Le soluzioni alternative includono pianificare per i giorni 28-31 e aggiungere un controllo shell ([ $(date +%d -d tomorrow) -eq 01 ]), oppure usare un'implementazione cron estesa come Quartz che supporta il modificatore L. Anche le espressioni rate di AWS EventBridge possono puntare nativamente all'ultimo giorno.
Qual è la differenza tra un generatore cron e un parser cron?
Un generatore cron prende i tuoi requisiti di pianificazione (ad es. 'ogni giorno feriale alle 9:00') e produce l'espressione cron corretta (0 9 * * 1-5). Un parser cron funziona al contrario: prende un'espressione esistente e produce una descrizione leggibile. Usa il generatore quando crei nuove pianificazioni. Usa il parser quando le rivedi o esegui il debug di quelle esistenti.
Come evito la sovrapposizione dei cron job?
Cron stesso non impedisce le esecuzioni sovrapposte. Se un job pianificato ogni minuto impiega 90 secondi, due istanze si sovrappongono. Per evitarlo, usa un file di lock (flock in bash), un lock distribuito (Redis, etcd) o la policy di concorrenza integrata nel tuo scheduler. I Kubernetes CronJobs hanno un campo concurrencyPolicy che può essere impostato su Forbid o Replace. Negli scheduler a livello applicativo come Celery, usa il pool solo o un lock a livello di task.
In cron, 0 o 1 è il primo giorno della settimana?
In POSIX cron, 0 è domenica e 6 è sabato. Sia 0 che 7 rappresentano domenica nella maggior parte delle implementazioni. Quartz Scheduler usa una convenzione diversa in cui 1 è domenica e 7 è sabato. Se il tuo sistema supporta i nomi dei giorni (SUN, MON, TUE), usali al posto dei numeri per evitare confusione tra piattaforme diverse.
Come genero un'espressione cron per un fuso orario specifico?
Il crontab tradizionale usa il fuso orario locale del sistema. Su alcuni sistemi puoi impostare la variabile TZ nel file crontab (TZ=America/New_York). I Kubernetes CronJobs supportano un campo .spec.timeZone dalla versione 1.25. AWS EventBridge e Google Cloud Scheduler consentono di specificare il fuso orario per ogni pianificazione. Documenta sempre il fuso orario atteso insieme all'espressione cron nella tua configurazione.