Fare lo stesso compito più e più volte può essere un lavoro piuttosto pesante. La pianificazione dei cron jobs consente agli utenti di automatizzare le attività sull’hosting VPS o su qualsiasi sistema operativo simile a Unix. Ciò consente di risparmiare tempo prezioso, consentendo agli utenti di concentrarsi su altre attività essenziali.

In questa guida completa per principianti, imparerai le basi dei cron jobs, inclusi i loro tipi, sintassi, stringhe speciali e autorizzazioni. Alla fine di questo articolo, sarai in grado di utilizzare i cron job per pianificare le attività in modo più efficiente.

Iniziamo.

Che cos’è un Cron Job?

Cron è un programma di utilità che consente agli utenti di immettere comandi per la pianificazione delle attività ripetutamente in un momento specifico. Le attività pianificate in cron sono chiamate cron jobs . Gli utenti possono determinare il tipo di attività che desiderano automatizzare e quando deve essere eseguita.

Cron è un daemon , un processo in background che esegue lavori non interattivi. In Windows, potresti avere familiarità con i processi in background come i servizi che funzionano in modo simile al cron daemon.

Un daemon è sempre inattivo, in attesa di un comando che gli richieda di eseguire un particolare compito. Il comando può essere immesso su qualsiasi computer della rete.

Un file cron è un semplice file di testo che contiene comandi da eseguire periodicamente in un momento specifico. La tabella cron di sistema predefinita o il file di configurazione crontab è /etc/crontab , situata nella directory crontab /etc/cron.*/ .

Solo gli amministratori di sistema possono modificare il file crontab di sistema. Tuttavia, i sistemi operativi simili a Unix supportano più amministratori. Ognuno può creare un file crontab e scrivere comandi per eseguire lavori ogni volta che lo desidera.

Con i cron job, gli utenti possono automatizzare la manutenzione del sistema, il monitoraggio dello spazio su disco e pianificare i backup. A causa della loro natura, i cron jobs sono ottimi per i computer che funzionano 24 ore su 24, 7 giorni su 7, come i server.

Sebbene i cron jobs siano utilizzati principalmente dagli amministratori di sistema, possono essere utili anche per gli sviluppatori web.

Ad esempio, come amministratore di un sito Web, puoi impostare un cron job per eseguire automaticamente il backup del tuo sito ogni giorno a mezzanotte, un altro per verificare la presenza di collegamenti interrotti ogni lunedì a mezzanotte e un terzo per svuotare la cache del sito ogni venerdì a mezzogiorno.

Tuttavia, come qualsiasi altro programma, cron ha dei limiti che dovresti considerare prima di usarlo:

  • L’intervallo più breve tra i lavori è di 60 secondi . Con cron, non sarai in grado di ripetere un lavoro ogni 59 secondi o meno.
  • Centralizzato su un computer. I cron jobs non possono essere distribuiti su più computer su una rete. Quindi, se il computer che esegue cron si arresta in modo anomalo, le attività pianificate non verranno eseguite e i lavori persi potranno essere eseguiti solo manualmente.
  • Nessun meccanismo di riprova automatica . Cron è progettato per funzionare in orari rigorosamente specificati. Se un’attività non riesce, non verrà eseguita di nuovo fino alla prossima ora pianificata. Questo rende cron inadatto per le attività incrementali.

Con queste limitazioni, cron è un’ottima soluzione per attività semplici che vengono eseguite in un momento specifico con intervalli regolari di almeno 60 secondi.

Se desideri pianificare un lavoro occasionale per dopo, potresti voler utilizzare un altro metodo .

Operazioni Cron Job di base

Questo tutorial ti mostrerà come pianificare i cron jobs inserendo comandi in un programma shell come Bash su Linux o un altro sistema operativo simile a Unix.

Gli hosting VPS di solito funzionano su un sistema operativo basato su Linux. Pertanto, imparare a pianificare i cron jobs aumenterà in modo significativo l’efficienza del lavoro come amministratore del VPS. È possibile accedere alla riga di comando per VPS tramite SSH .

Prima di procedere con le operazioni di base di cron scheduling, è essenziale conoscere i diversi file di configurazione di cron job:

  • Il sistema crontab. Usalo per pianificare lavori essenziali a livello di sistema che possono essere modificati solo con i privilegi di root.
  • Il crontab dell’utente. Questo file consente agli utenti di creare e modificare cron jobs che si applicano solo a livello di utente.

Se vuoi modificare il crontab di sistema, assicurati che l’utente corrente abbia i privilegi di root.

Di seguito sono riportate alcune operazioni di base che cron può eseguire:

Esempi di operazioni cron di base.

Per creare o modificare un file crontab , inserisci quanto segue nella riga di comando : crontab -e

Se non vengono trovati file crontab nel tuo sistema, il comando ne creerà automaticamente uno nuovo. crontab -e ti consente di aggiungere, modificare ed eliminare i cron jobs.

Avrai bisogno di un editor di testo come vi o nano per modificare un file crontab. Quando inserisci crontab -e per la prima volta, ti verrà chiesto di scegliere con quale editor di testo vuoi modificare il file.

Per visualizzare un elenco di attività pianificate attive nel tuo sistema, inserisci il seguente comando : crontab -l

Se il tuo sistema ha più utenti, puoi visualizzare i loro elenchi di file crontab inserendo il seguente comando come superutente : crontab -u nome utente -l

Puoi anche modificare facilmente i lavori pianificati di altri utenti digitando il seguente comando crontab : sudo su crontab -u nome utente -e

Per darti i privilegi di root, aggiungi sudo su all’inizio del comando. Alcuni comandi, incluso questo, possono essere eseguiti solo dagli utenti root.

Infine, per eliminare tutte le attività pianificate nel file crontab e ricominciare da capo, digita il seguente comando : crontab -r

In alternativa, il seguente comando è lo stesso di crontab -r , tranne per il fatto che richiederà all’utente un’opzione sì/no prima di rimuovere il crontab : crontab -i

Oltre a crontab, l’utente root può anche aggiungere cron jobs alla directory etc/cron.d . È più adatto per l’esecuzione di script per installazioni e aggiornamenti automatici.

Tieni presente che l’utente che aggiunge cron jobs a questa directory deve avere accesso root e conformarsi alle convenzioni di denominazione delle parti di esecuzione .

In alternativa, un utente root può spostare i propri script nelle seguenti directory per pianificarne l’esecuzione:

  • /etc/cron.hourly/ – Esegue tutti gli script una volta all’ora
  • /etc/cron.daily/ – Esegui una volta al giorno.
  • /etc/cron.weekly/ – Esegui una volta alla settimana.
  • /etc/cron.monthly/ – Esegui una volta al mese.

Sintassi di Crontab

Per creare un cron job, devi prima comprendere la sintassi e la formattazione di cron. In caso contrario, potrebbe non essere possibile impostare correttamente i cron jobs.

La sintassi crontab è composta da cinque campi con i seguenti valori possibili:

  • Minuto. Il minuto dell’ora in cui verrà eseguito il comando, compreso tra 0 e 59.
  • Ora. L’ora in cui verrà eseguito il comando, compresa tra 0 e 23 nella notazione delle 24 ore.
  • Giorno del mese . Il giorno del mese in cui l’utente desidera eseguire il comando, compreso tra 1 e 31.
  • Mese . Il mese in cui l’utente desidera eseguire il comando, compreso tra 1 e 12, che rappresenta quindi gennaio-dicembre.
  • Giorno della settimana. Il giorno della settimana in cui eseguire un comando, compreso tra 0 e 6, che rappresenta la domenica-sabato. In alcuni sistemi, il valore 7 rappresenta la domenica.

Non lasciare vuoto nessuno dei campi.

Se, ad esempio, vuoi configurare un cron job per eseguire root/backup.sh ogni venerdì alle 17:37, ecco come dovrebbe essere il tuo comando cron : 37 17 * * 5 root/backup. SH

Nell’esempio sopra, 37 e 17 rappresentano le 17:37. Entrambi gli asterischi per i campi Giorno del mese e Mese indicano tutti i valori possibili. Ciò significa che l’attività deve essere ripetuta indipendentemente dalla data o dal mese. Infine, 5 rappresenta venerdì. L’insieme di numeri è quindi seguito dalla posizione dell’attività stessa.

Se non sei sicuro di scrivere manualmente la sintassi cron, puoi utilizzare strumenti gratuiti come Crontab Generator o Crontab.guru per generare i numeri esatti per l’ora e la data che desideri per il tuo comando.

Per impostare l’ora corretta per il comando cron, è essenziale la conoscenza degli operatori cron job. Ti permettono di specificare quali valori vuoi inserire in ogni campo. È necessario utilizzare gli operatori appropriati in tutti i file crontab.

  • Asterisco (*) . Utilizzare questo operatore per indicare tutti i valori possibili in un campo. Ad esempio, se desideri che il tuo cron job venga eseguito ogni minuto, scrivi un asterisco nel campo Minute .
  • Virgola (,) . Utilizzare questo operatore per elencare più valori. Ad esempio, scrivendo 1,5 nel campo Giorno della settimana si pianificherà l’attività da eseguire ogni lunedì e venerdì.
  • Trattino (-) . Utilizzare questo operatore per determinare un intervallo di valori. Ad esempio, se vuoi impostare un cron job da giugno a settembre, scrivendo 6-9 nel campo Month farà il lavoro.
  • Separatore (/) . Utilizzare questo operatore per dividere un valore. Ad esempio, se desideri eseguire uno script ogni dodici ore, scrivi */12 nel campo Ora .
  • Last (L) . Questo operatore può essere utilizzato nei campi giorno del mese e giorno della settimana. Ad esempio, scrivere 3L nel campo del giorno della settimana significa l’ultimo mercoledì di un mese.
  • Giorno della settimana (M) . Utilizzare questo operatore per determinare il giorno della settimana più vicino a una determinata ora. Ad esempio, se il primo di un mese è un sabato, scrivendo 1W nel campo del giorno del mese verrà eseguito il comando il lunedì successivo (il 3 ).
  • Hash (#). Utilizzare questo operatore per determinare il giorno della settimana, seguito da un numero compreso tra 1 e 5. Ad esempio, 1#2 indica il secondo lunedì del mese.
  • Punto interrogativo (?) . Utilizzare questo operatore per inserire “nessun valore specifico” per i campi “giorno del mese” e “giorno della settimana”.

Stringhe speciali Cron Job

Le stringhe speciali vengono utilizzate per pianificare i cron jobs a intervalli di tempo senza che l’utente debba capire l’insieme logico di numeri da inserire. Per usarli, scrivi una @ seguita da una semplice frase.

Ecco alcune utili stringhe speciali che puoi usare nei comandi:

  • @hourly . Il lavoro verrà eseguito una volta all’ora.
  • @daily o @midnight . Queste stringhe eseguiranno l’attività ogni giorno a mezzanotte.
  • @weekly . Usalo per eseguire i lavori una volta alla settimana a mezzanotte di domenica.
  • @monthly Questa stringa speciale esegue un comando una volta il primo giorno di ogni mese.
  • @yearly . Usalo per eseguire un’attività una volta all’anno a mezzanotte del 1° gennaio.
  • @reboot . Con questa stringa, il lavoro verrà eseguito solo una volta all’avvio.

Ricorda di prestare particolare attenzione quando pianifichi i cron job sensibili al fuso orario.

Esempi di sintassi Cron scheduling

Ora che sai come appare la sintassi cron corretta, esamineremo alcuni esempi per aiutarti a capirla meglio.

Tieni presente che l’output di cron verrà inviato automaticamente al tuo account di posta elettronica locale. Se vuoi smettere di ricevere email, puoi aggiungere >/dev/null 2>&1 a un comando come nell’esempio seguente:0 5 * * * /root/backup. sh > /dev/ null 2 > & 1

Se desideri inviare l’output a un account e-mail specifico, aggiungi MAILTO seguito da un indirizzo e-mail. Ecco un esempio:MAILTO= “mionome@creativemotions.it”0 3 * * * /root/backup. sh > /dev/ null 2 > & 1

Dai un’occhiata ai seguenti comandi di esempio per avere una migliore comprensione della sintassi cron:

EsempioSpiegazione
0 0 * * 0 /root/backup.shEseguire un backup ogni domenica a mezzanotte.
0 * * * 1 /root/clearcache.shSvuota la cache ogni ora il lunedì.
0 6,18 * * * /root/backup.shBackup dei dati due volte al giorno alle 6:00 e alle 18:00.
*/10 * * * * /scripts/monitor.shEseguire il monitoraggio ogni 10 minuti.
*/15 * * * * /root/backup.shEseguire un backup ogni 15 minuti.
* * 20 7 * /root/backup.shEsegui un backup ogni minuto il 20 luglio.
0 22 * ​​* 1-5 /root/clearcache.shSvuota la cache ogni giorno della settimana (dal lunedì al venerdì) alle 22:00.
0 0 * * 2 * /root/backup.shEseguire un backup a mezzanotte ogni martedì.
* * * 1,2,5 * /scripts/monitor.shEseguire il monitoraggio ogni minuto nei mesi di gennaio, febbraio e maggio.
10-59/10 5 * * * /root/clearcache.shSvuota la cache ogni 10 minuti alle 5 del mattino, a partire dalle 5:10.
0 8 1 */3 * /home/utente/script.shEseguire l’attività trimestralmente il primo giorno del mese alle 8:00.
0 * * * * /root/backup.shCrea un backup ogni ora.
* * * * * /scripts/script.sh; /scripts/scrit2.shIncludi più attività in un singolo cron job. Utile per programmare più attività da eseguire contemporaneamente.
@reboot /root/clearcache.shCancella la cache ogni volta che accendi il sistema.
0 8 1-7 * 1 /script/script.shEsegui uno script il primo lunedì di ogni mese, alle 8:00.
5 4 * * 0 /root/backup.shCrea un backup ogni domenica alle 4:05.
15 9 1,20 * * /script/monitor.shEseguire il monitoraggio alle 21:15 il 1° e il 20 di ogni mese.
@hourly /scripts/monitor.shEseguire il monitoraggio ogni ora.
0 0 1,15 * 3 /script/script.shEsegui uno script a mezzanotte ogni mercoledì tra l’1 e il 15 di ogni mese.
15 14 1 * * /root/clearcache.shSvuota la cache il primo giorno di ogni mese alle 14:15.
00 08-17 * * 1-5 bin/check-db-statoControlla lo stato del database tutti i giorni dal lunedì al venerdì ogni ora dalle 20:00 alle 17:00.
15 6 1 1 * /root/backup.shEseguire un backup ogni 1° gennaio alle 6:15.
0 0 * * * /scripts/monitor.shEsegui lo script di monitoraggio una volta al giorno a mezzanotte.
0 0 15 * * /root/clearcache.shSvuota la cache alla mezzanotte del 15 di ogni mese.
* * * * 1,5 /scripts/monitor.shEffettuare il monitoraggio ogni lunedì e venerdì.

Permessi Cron

I seguenti due file possono essere creati o modificati per consentire o limitare agli utenti l’utilizzo del file cron del sistema:

  • /etc/cron.allow – se cron.allow esiste, dovrebbe contenere un nome utente per consentirgli di usare i cron jobs.
  • /etc/cron.deny – se cron.allow non esiste ma cron.deny sì , l’utente che vuole usare i job cron non deve essere elencato all’interno del file.

Conclusione

L’impostazione di lavori pianificati automaticamente è una soluzione pratica che impedisce di dimenticare attività importanti.

I cron jobs sono un modo eccellente per gli amministratori di sistema e gli sviluppatori web di gestire attività ripetitive. Tutto ciò che deve essere fatto è inserire i comandi corretti e scegliere il tempo di esecuzione corretto.

Per pianificare un cron job, usa la sintassi corretta nella riga di comando. In alternativa, puoi utilizzare stringhe speciali per semplificare il processo. Ricorda di assegnare le autorizzazioni appropriate in modo che solo gli utenti autorizzati possano accedere al file cron.

Ci auguriamo che questo articolo ti abbia aiutato a comprendere le basi dell’utilizzo dei cron job per pianificare le attività.

Buon lavoro.