Manuale di Crontab – Pianificazione delle attività in Linux

Svolgere sempre gli stessi compiti, sia su base giornaliera, settimanale o mensile, è un compito che, nel tempo, stanca e degenera, a seconda della sua complessità, in cui lo lasciamo da parte. La soluzione a questo problema è automatizzarlo il più possibile. Proprio come Windows ci consente di automatizzare determinate attività, Linux ci offre anche questa opzione tramite Crontab, ma non esclusivamente.

Se vogliamo automatizzare il funzionamento di Linux, che sia per fare una copia di backup, per generare report, per modificare la configurazione o per qualsiasi altra cosa, la soluzione è utilizzare Crontab in combinazione con Cron, dato che, a differenza di Windows, abbiamo bisogno di due minimo di applicazioni.

Manuale Crontab

Cos'è Crontab?

Crontab è un file di testo in cui vengono create automazioni in base a una serie di parametri, un file di testo che è letto da Cron . Entrambe le applicazioni sono disponibili nativamente nella maggior parte delle distribuzioni Linux più comuni, quindi non è necessario installare alcun repository sul nostro computer per poterle utilizzare.

Crontab ci offre una serie di script, uno per riga, che ci permette di personalizzare l'ora esatta in cui vogliamo per eseguire uno o più compiti e le loro ripetizioni nel tempo. Infatti il ​​suo nome deriva dalla parola greca Cronos , che significa tempo. Ogni script contiene informazioni sulla data esatta in cui deve essere eseguito, data indicata da una serie di numeri. Ad esempio, un pulsante. Il seguente script eseguirà nfsfind ogni domenica alle 5:30 del mattino

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

I primi due numeri rappresentano l'ora in cui verrà eseguito il comando, il primo numero rappresenta i minuti e il secondo le ore. Il formato dell'ora utilizzato da Crontab è 24 ore, quindi se vogliamo eseguire l'attività alle 5 del pomeriggio, questo sarebbe il numero 17. Gli asterischi rappresentano tutti i valori, mentre il numero 0 corrisponde alle domeniche.

Non confondere Cron con Crontab

Mentre Crontab ci consente di eseguire i nostri sistemi automazioni , questi vengono eseguiti, anche se non esclusivamente, con l'applicazione Cron, un'applicazione che viene eseguita in background e che esegue tutte le attività che abbiamo precedentemente configurato in Crontab. Questa applicazione utilizza l'ora del nostro sistema per eseguirli, quindi è importante, se utilizziamo una macchina virtuale, che sia l'ora della macchina ospite che quella del nostro computer siano sempre le stesse, poiché, in caso contrario, l'ora programmata non sarà corretto.

Cron legge il contenuto del file Crontab ogni minuto, quindi possiamo modificarlo in qualsiasi momento per eseguire attività che vogliamo eseguire nella stessa sessione, senza dover forzare l'applicazione a leggerne nuovamente il contenuto per trovare nuovi script da eseguire.

Non tutti gli utenti hanno la possibilità di creare file Crontab per automatizzare le attività di sistema. L'amministratore di sistema ha la possibilità di consentire o negare questa opzione tramite rispettivamente il file cron.allow o cron.den, file che si trovano in /etc/cron.do /etc/ a seconda della versione della distribuzione Linux che abbiamo. installato sul nostro computer.

Come automatizzare le attività in Linux

Come accennato in precedenza, gli script Crontab iniziano con la data in cui vogliamo che vengano eseguiti seguita dal comando. La sintassi di Crontab è la seguente.

Gestione della pianificazione

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minuto, questo può essere compreso tra 0 e 59
  • Tempo, come abbiamo accennato, Crontab utilizza il formato 24 ore, quindi l'intervallo di numeri va da 0 a 23.
  • Giorno del mese, non c'è molto mistero, in questo parametro dato che va da 1 a 31.
  • Mese, da 1 a 12
    • Gennaio 1
    • Febbraio 2
    • Marzo 3
    • Aprile 4
    • Maggio 5
    • Giugno 6
    • Luglio 7
    • agosto 8
    • Settembre 9
    • ottobre 10
    • novembre 11
    • Dicembre 12.
  • Giorno della settimana, da 0 a 6, domenica è il numero 0 anche se alcune versioni di Crontab consentono anche di utilizzare il numero 7. In questo modo, il codice per i giorni della settimana è
    • 0 domenica
    • 1 lunedì
    • 2 martedì
    • 3 mercoledì
    • giovedì 4
    • 5 venerdì
    • 6 sabato

Ma, in aggiunta, possiamo anche usare l'asterisco (*) per specificare tutti i possibili valori di una variabile. Se vogliamo stabilire più valori, possiamo farlo attraverso la virgola (,) o un intervallo di valori separandoli con un trattino (-). Possiamo anche impostare passi diversi con “/”.

Se non è ancora molto chiaro, allora ti mostriamo i codici temporali che possiamo utilizzare per eseguire attività periodicamente a seconda della loro periodicità

  • 0 * * * * Utilizzando il time code, lo script verrà eseguito ogni ora allo scoccare dell'ora.
  • 0 0 * * * Ogni giorno lo script verrà eseguito una sola volta
  • 0 0 * * 0 Lo script viene eseguito una volta alla settimana
  • 0 0 1 * * Verrà eseguito una volta al mese
  • 0 0 1 1 * Lo script verrà eseguito una volta all'anno

Una volta chiarito come funziona la pianificazione delle attività in Crontab, la prima cosa che faremo è creare il file in cui creeremo tutti i processi che vogliamo automatizzare utilizzando il seguente comando

crontab nombre-archivo

Se non vogliamo crearne uno nuovo, oppure lo abbiamo già creato e vogliamo modificarlo, utilizziamo questo comando

crontab -e

Se vogliamo eliminare il file Crontab creato

crontab -d

Con il seguente comando, possiamo elencare tutte le attività incluse nel file Crontab

crontab -d

Gli amministratori di sistema possono limitare l'uso delle automazioni di sistema modificando i file cron.allow o cron.den, file che si trovano in /etc/cron.d/ o /etc/ se non abbiamo precedentemente modificato la loro posizione.

automatizzare le attività

Per modificare il file Crontab che abbiamo creato, utilizzeremo l'editor di testo incluso in tutte le distribuzioni Linux, anche se possiamo modificarlo anche direttamente da Crontab aggiungendo la variabile -e.

nano nombrearchivo

Introduciamo il codice numerico accompagnato da asterischi e lo script che vogliamo eseguire. Successivamente, dobbiamo dare a Cron i permessi per eseguirlo, altrimenti non saprà della sua esistenza e non sarà mai in grado di eseguirlo. Per fare questo, useremo il comando

chmod ugo+x nombrearchivo

Inizialmente, utilizzare Crontab per automatizzare le attività non sembra affatto facile e ricorda la necessità (quasi comune) di Linux di ricorrere alla riga di comando praticamente per tutto, limitando così più utenti dall'adottare Linux come sistema operativo in un giorno- base odierna. .

L'utilità di pianificazione di Windows utilizza un'interfaccia grafica non molto semplice da utilizzare senza le necessarie conoscenze, tuttavia è molto più intuitiva di quella offerta da Linux tramite riga di comando.

Esempio funzionante di Crontab e Cron

La prima cosa che dobbiamo fare per automatizzare le attività in Linux è creare il file in cui includeremo tutti i comandi che vogliamo vengano eseguiti sul computer al momento della configurazione. In questo esempio, creeremo il file "test" che sarà responsabile dell'eliminazione di tutti i file e le cartelle vuote presenti nella directory tmp. Per fare ciò, inseriremo il seguente comando.

crontab prueba

Successivamente, dobbiamo inserire il comando (o i comandi separandoli con punto e virgola ";" senza virgolette). In questo esempio, utilizzeremo Crontab per eliminare i file nella cartella tmp.

find /tmp -type f -empty -delete

Successivamente, modifichiamo il file per aggiungere la pianificazione, ovvero quando vogliamo che le attività che abbiamo inserito nel file vengano eseguite.

crontab -e

Affinché venga eseguito tutti i giorni alle 10 del mattino, dobbiamo aggiungere 0 10 * * * prima dello script, lasciando la riga così

0 10 * * * find /tmp -type f -empty -delete

Se vogliamo che venga eseguito in un altro momento, dobbiamo solo modificare il numero 10 per l'ora (in formato 24 ore) in cui vogliamo che venga eseguito. Possiamo anche usare il codici temporali che abbiamo mostrato nella sezione Gestione della programmazione per configurarlo. Infine, utilizziamo il seguente comando in modo che Cron possa eseguire il file di automazioni che abbiamo creato.

[code]chmod ugo+x prueba

Alternative a Cron

Come accennato nelle sezioni precedenti, Cron si occupa di eseguire i comandi che abbiamo precedentemente inserito in Crontab. Cron è uno strumento perfetto per i team che lavorano 24 ore al giorno, anche se possiamo anche adattarlo al nostro programma di lavoro, anche se sottrae risorse al team durante lo svolgimento delle attività. Se stiamo cercando opzioni più semplici per Cron, ti mostriamo alcune delle migliori alternative.

anacronistico

Anacron ci consente di programmare l'esecuzione automatizzata delle attività in un giorno, una settimana o un mese, in qualsiasi momento. Se il computer è spento, al successivo avvio del computer verrà eseguita l'attività precedentemente inserita in Crontab. Con Cron, se il computer viene spento alla data specificata, l'attività non verrà eseguita all'accensione del computer. Anacron è disponibile nella maggior parte delle distribuzioni Linux e possiamo installarlo sul computer tramite il seguente comando.

sudo apt install anacron

Cronie

Cronie ci offre un'esperienza molto più completa di Cron e un piccolo insieme di applicazioni (tra cui è incluso Anacron) e con le quali possiamo programmare i flussi di lavoro molto rapidamente e facilmente tramite Crontab. A differenza di Anacron, per installare Cronie, non è disponibile nei repository Linux, quindi dobbiamo visitare la sua pagina web su GitHub per scaricarlo o utilizzare il seguente comando.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz