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:run4. Report Periodici
Genera report ogni mattina.
5. Sincronizzazione Dati
Sincronizza dati ogni ora.
Best Practices
- Usa percorsi assoluti per comandi e file
- Configura il logging per debug e monitoraggio
- Gestisci gli errori con notifiche o logging
- Testa i job manualmente prima di schedularli
- Evita overlap - assicurati che job lunghi non si sovrappongano
- Usa lock per job che non devono eseguire in parallelo