Cron

Cron è un servizio per la schedulazione di task periodici. Permette di eseguire comandi e script automaticamente a intervalli definiti tramite espressioni cron.

Cos'è Cron

Cron è uno scheduler che:

  • Esegue comandi a orari programmati
  • Usa espressioni cron per definire gli intervalli
  • Opera in background come servizio
  • Supporta qualsiasi comando bash

Configurazione Base

Campo Descrizione
Enabled Attiva o disabilita Cron
Version Versione dell'immagine Cron

Configurazione Docker

Campo Descrizione
CPU Cores Limit Limite CPU per il container
Memory Limit (MB) Limite memoria per il container in MB

File di Configurazione

File Descrizione
cronjobs.conf File crontab con i job schedulati
Dockerfile File Docker per la build dell'immagine

Formato Espressione Cron

Un'espressione cron ha 5 campi:

Campo Valori Descrizione
Minuto 0-59 Minuto dell'ora
Ora 0-23 Ora del giorno
Giorno del mese 1-31 Giorno del mese
Mese 1-12 Mese dell'anno
Giorno della settimana 0-7 0 e 7 = Domenica

Caratteri Speciali

Carattere Significato Esempio
* Qualsiasi valore * (ogni minuto)
, Lista di valori 1,15 (1 e 15)
- Range 1-5 (da 1 a 5)
/ Step */5 (ogni 5)

Esempi Comuni

Espressione Descrizione
* * * * * Ogni minuto
0 * * * * Ogni ora (minuto 0)
0 0 * * * Ogni giorno a mezzanotte
0 0 * * 0 Ogni domenica a mezzanotte
0 0 1 * * Il primo di ogni mese
*/5 * * * * Ogni 5 minuti
0 */2 * * * Ogni 2 ore
0 9-17 * * 1-5 Ogni ora dalle 9 alle 17, lun-ven

Casi d'Uso Comuni

1. Backup Automatici

Esegui backup del database ogni notte.

2. Pulizia File Temporanei

Rimuovi file vecchi ogni settimana.

3. Comandi Laravel/PHP

Esegui lo scheduler Laravel ogni minuto:

terminal
* * * * * php /var/www/html/artisan schedule:run

4. Report Periodici

Genera report ogni mattina.

5. Sincronizzazione Dati

Sincronizza dati ogni ora.

Best Practices

  1. Usa percorsi assoluti per comandi e file
  2. Configura il logging per debug e monitoraggio
  3. Gestisci gli errori con notifiche o logging
  4. Testa i job manualmente prima di schedularli
  5. Evita overlap - assicurati che job lunghi non si sovrappongano
  6. Usa lock per job che non devono eseguire in parallelo

Prossimi Passi

  • N8N - Automazione avanzata con interfaccia visuale
  • PHP - Scheduler Laravel integrato