CodeGym /Corsi /Docker SELF /Automazione delle attività con cron e at

Automazione delle attività con cron e at

Docker SELF
Livello 3 , Lezione 5
Disponibile

1. Perché serve l'automazione?

L'automazione dei compiti è la base delle basi per qualsiasi amministratore di sistema, soprattutto in Linux. Immagina di lavorare senza automazione: ogni mattina entri nel terminale e inserisci lo stesso comando per fare i backup dei tuoi dati, archiviarli, inviarli al server e pulire i vecchi log. Dopo una settimana, questa routine ti farebbe pensare a cambiare lavoro… Ma no, siamo qui per insegnarti come fare della macchina il tuo fedele servo.

La lezione di oggi è pura magia di tempo e attività. Impareremo ad automatizzare i processi a livello di sistema operativo con strumenti incredibili come cron e at. Questi tool salvano un sacco di tempo ed evitano, a volte, una buona dose di stress.

L'automazione è un salvagente per qualsiasi compito ripetitivo. Per esempio, hai uno script che genera un report per il tuo capo. Questo report serve ogni mattina alle 8:00. Invece di alzarti prima per avviare manualmente lo script (e rischiare di restare bloccato con una tazza di caffè e dimenticare di avviarlo), puoi configurare cron per farlo eseguire automaticamente.

cron è uno strumento per attività regolari che si ripetono a intervalli prestabiliti.
at è un'utility per attività una tantum che devono essere eseguite in un momento specifico.


2. Lavorare con cron

Cos'è cron?

cron è un demone (processo di sistema) che funziona in background ed esegue attività programmate a un certo momento. Gli orari per queste attività sono salvati nei cosiddetti crontab — sono file di testo. Ogni utente nel sistema può avere il proprio crontab.

La tua prima attività con cron

Ecco come appare il comando base per lavorare con cron:

crontab -e

Questo comando apre il crontab dell'utente corrente per modificarlo. Puoi aggiungere attività specificando il formato dell'orario.

Sintassi degli orari

Una riga nel crontab consiste di sei campi:

* * * * * COMMAND
- - - - -
| | | | └─ Giorno della settimana (0–7, dove 0 e 7 sono domenica)
| | | └── Mese (1–12)
| | └─── Giorno del mese (1–31)
| └──── Ore (0–23)
└───── Minuti (0–59)

Esempio: esegui echo "Ciao, Linux" ogni giorno a mezzogiorno:

0 12 * * * echo "Ciao, Linux"

Pratica: avviamo una semplice attività

  1. Apri il tuo crontab per modificarlo:

    crontab -e
    
  2. Aggiungi la riga:

    */5 * * * * echo "Ciao, mondo! L'ora è $(date)" >> ~/cron_test.log
    

    Questa attività aggiungerà una riga con l'ora corrente al file cron_test.log ogni 5 minuti. Salva il file ed esci.

  3. Controlla se l'attività è stata avviata:

    tail -f ~/cron_test.log
    

    Dopo 5 minuti dovresti vedere una voce aggiornata nel file.

Visualizzare le attività pianificate

Per controllare le attività correnti:

crontab -l

Rimuovere attività

Per rimuovere tutte le attività da crontab:

crontab -r

Esempi reali di utilizzo di cron

Archiviazione dei file

Supponiamo che tu voglia archiviare i file dalla cartella /var/logs ogni notte alle 3:

  1. Scrivi uno script:

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. Imposta un orario nel crontab:

    0 3 * * * /path/to/script.sh
    

E voilà! Non dimenticherai mai più di fare un backup.

Notifica sul carico del sistema

Ad esempio, vuoi ricevere una notifica se il carico della CPU supera l'80%:

  1. Scrivi uno script:

    #!/bin/bash
    LOAD=$(uptime | awk '{print $10}' | sed 's/,//')
    if (( $(echo "$LOAD > 0.80" | bc -l) )); then
        echo "Carico CPU elevato: $LOAD" | mail -s "Avviso CPU" tu@example.com
    fi
  2. Imposta l'orario:

    */10 * * * * /path/to/cpu_check.sh
    

3. Lavorare con at

at permette di eseguire un'attività una tantum a un'ora specifica. A differenza di cron, le attività di at non si ripetono. Questo è comodo per attività del tipo "fallo domani alle 9 di mattina".

Un'attività semplice con at

Ecco un esempio di come pianificare un'attività:

echo "echo 'Ciao, Linux!'" | at now + 1 minute

Questo comando avvierà il comando echo 'Ciao, Linux!' tra un minuto.

Puoi specificare un'ora e una data precise:

echo "echo 'Backup completato!'" | at 10:30 AM tomorrow

Gestione delle attività con at

Dopo aver aggiunto un'attività, puoi visualizzare l'elenco delle attività:

atq

Esempio di output:

1   Tue Oct 31 10:30:00 2023 a user
2   Tue Oct 31 11:00:00 2023 a user

Per eliminare un'attività:

atrm <job_id>

Pratica: utilizzare at per le notifiche

  1. Crea un'attività per una notifica tra 2 minuti:

    echo "notify-send 'Il tempo è scaduto!'" | at now + 2 minutes
    
  2. Controlla l'elenco delle attività:

    atq
    
  3. Attendi la comparsa della finestra popup tra 2 minuti.


4. Errori tipici nell'utilizzo di cron e at

Uno dei problemi più comuni è specificare un percorso errato allo script o al comando. Ricorda che cron viene eseguito in un ambiente minimale, quindi potrebbe non conoscere le tue variabili, come PATH. Il modo migliore è usare percorsi assoluti.

Ad esempio, se vuoi eseguire uno script Python:

*/30 * * * * /usr/bin/python3 /path/to/script.py

Assicurati anche che lo script abbia i permessi di esecuzione:

chmod +x /path/to/script.sh

A cosa serve?

Le competenze di automatizzazione sono richieste in quasi tutte le professioni legate all'IT. Puoi usare queste conoscenze per:

  • Automatizzare attività di sistema ripetitive.
  • Configurare backup periodici.
  • Monitorare lo stato dei server.
  • Prepararti per colloqui di lavoro, dove spesso si parla di cron e automatizzazione.

Se lavori in DevOps, amministrazione di sistemi o semplicemente vuoi essere più produttivo, capire cron e at ti aiuterà a distinguerti e a risparmiare un sacco di tempo.

Ora sai come far lavorare Linux per te. La prossima volta che qualcuno si lamenterà della routine, sorridi semplicemente, perché tu sei il maestro dell'automatizzazione!

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION