Creare un lavoro Cron personalizzato su Linux

L’automazione delle attività di routine è essenziale in qualsiasi flusso di lavoro di amministrazione di sistema o di sviluppo web. I job di Cron forniscono un potente job scheduler basato sul tempo nei sistemi operativi Unix-like, consentendo di eseguire automaticamente script o comandi a intervalli pianificati.

Che cos’è un lavoro Cron?

Un cron job è un’attività pianificata definita nella crontab (tabella cron) del sistema che esegue comandi o script a orari o intervalli specifici. Cron è molto utilizzato perché è:

  • Leggero

  • Altamente personalizzabile

  • Integrato nella maggior parte delle distribuzioni Linux

Casi d’uso comuni

  • Backup giornalieri o settimanali del database

  • Esecuzione di script PHP/Python

  • Rotazione dei log e pulizia dei file temporanei

  • Invio di e-mail programmate

  • Aggiornamento delle cache dei dati o sincronizzazione dei file

Passo 1: Accedere a Crontab

Per modificare il crontab del vostro utente (senza accesso root):

crontab -e
Per modificare il crontab di root (richiede sudo):
sudo crontab -e

Passo 2: Sintassi di Cron

Ogni cron job utilizza il seguente formato:

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └──── Day of the week (0-7, Sunday = 0 or 7)
│ │ │ └────── Month (1–12)
│ │ └──────── Day of the month (1–31)
│ └────────── Hour (0–23)
└──────────── Minute (0–59)

Esempio: Eseguire uno script ogni giorno alle 2 del mattino

0 2 * * * /home/user/scripts/backup.sh

Passo 3: Creare uno script personalizzato

Supponiamo di voler eseguire uno script Python personalizzato. Per prima cosa, create il file:

nano /home/user/scripts/cleanup.py

Esempio di script:

#!/usr/bin/env python3
import os
import datetime
log_dir = "/var/log/myapp"
threshold = 7 # days
now = datetime.datetime.now()
for filename in os.listdir(log_dir):
filepath = os.path.join(log_dir, filename)
if os.path.isfile(filepath):
file_age = now - datetime.datetime.fromtimestamp(os.path.getmtime(filepath))
if file_age.days > threshold:
os.remove(filepath)

Rendere lo script eseguibile:

chmod x /home/user/scripts/cleanup.py

Passo 4: Aggiungere il lavoro Cron

Modificare il crontab e aggiungere:

0 1 * * * /home/user/scripts/cleanup.py >> /var/log/cleanup.log 2>&1

Questo:

  • Esegue lo script ogni giorno all’1:00 AM

  • Registra l’output in /var/log/cleanup.log

Casi d’uso esemplificativi

eseguire ogni 10 minuti

*/10 * * * * /home/user/check_status.sh

eseguire solo il lunedì alle 3 del mattino

0 3 * * 1 /home/user/scripts/weekly_report.sh

Disabilitare o rimuovere un lavoro Cron

Disattivare temporaneamente una riga commentandola con #.

Per rimuovere tutti i lavori:

crontab -r

I cron job personalizzati sono un potente strumento di automazione, manutenzione e affidabilità. Che si tratti della gestione di una VPS personale, dell’implementazione di script di backend o dell’esecuzione di carichi di lavoro di produzione, la padronanza di cron consente di controllare quando e come vengono eseguite le attività, senza alcuno sforzo.