Fare lo stesso compito più e più volte può essere piuttosto un lavoro ingrato. La pianificazione dei lavori cron consente agli utenti di automatizzare le attività su un server privato virtuale 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 lavori cron, inclusi i loro tipi, sintassi, stringhe speciali e autorizzazioni. Entro la fine di questo articolo, sarai in grado di utilizzare i lavori cron per pianificare le attività in modo più efficiente.
Cos'è un Cron Job?
Cron è un programma di utilità che consente agli utenti di immettere i comandi per la pianificazione delle attività ripetutamente in un momento specifico. Le attività pianificate in cron sono chiamate lavori cron . Gli utenti possono determinare il tipo di attività che desiderano automatizzare e quando deve essere eseguita.
Cron è un demone, un processo in background che esegue lavori non interattivi. In Windows, potresti avere familiarità con processi in background come Servizi che funzionano in modo simile al demone cron.
Un demone è sempre inattivo, in attesa di un comando che lo richieda per eseguire un'attività particolare. 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 , che si trova all'interno della 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. Ciascuno può creare un file crontab e scrivere comandi per eseguire lavori in qualsiasi momento.
Con i lavori cron, gli utenti possono automatizzare la manutenzione del sistema, il monitoraggio dello spazio su disco e pianificare i backup. A causa della loro natura, i lavori cron sono ottimi per i computer che funzionano 24 ore su 24, 7 giorni su 7, come i server.
Sebbene i lavori cron 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 processo cron 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 tuo 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 lavori Cron non possono essere distribuiti su più computer su una rete. Pertanto, se il computer su cui è in esecuzione cron si arresta in modo anomalo, le attività pianificate non verranno eseguite e i lavori persi potranno essere eseguiti solo manualmente.
- Nessun meccanismo di ripetizione automatica . Cron è progettato per funzionare a orari rigorosamente specificati. Se un'attività non riesce, non verrà eseguita di nuovo fino al prossimo orario pianificato. Ciò rende cron inadatto per 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 una tantum per dopo, potresti voler utilizzare un altro metodo.
Operazioni di base di Cron Job
Questo tutorial ti mostrerà come pianificare i lavori cron inserendo i comandi in un programma shell come Bash su Linux o un altro sistema operativo simile a Unix.
L'hosting VPS di Hostinger funziona su un sistema operativo basato su Linux. Pertanto, imparare a pianificare i lavori cron aumenterà notevolmente l'efficienza del tuo lavoro come amministratore VPS. È possibile accedere alla riga di comando per VPS tramite PuTTY SSH.
Prima di procedere con le operazioni di base di cron, è fondamentale conoscere i diversi file di configurazione di cron job:
- Il crontab di sistema. Usalo per pianificare lavori essenziali a livello di sistema che possono essere modificati solo con i privilegi di root.
- L'utente crontab. Questo file consente agli utenti di creare e modificare lavori cron che si applicano solo a livello 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:
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 lavori cron.
Avrai bisogno di un editor di testo come vi o nano per modificare un file crontab. Quando si immette 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 immettendo il seguente comando come superutente:
crontab -u username -l
Puoi anche modificare facilmente i lavori programmati di altri utenti digitando il seguente comando crontab:
sudo su crontab -u username -e
Per concederti i privilegi di root , aggiungi sudo su all'inizio del comando. Alcuni comandi, incluso questo, possono essere eseguiti solo da utenti root.
Infine, eliminare tutte le attività pianificate nel tuo file crontab e ricomincia da capo, digita il seguente comando:
crontab -r
In alternativa, il comando seguente è lo stesso di crontab -r , tranne per il fatto che richiederà all'utente un'opzione sì/no prima di rimuovere crontab:
crontab -i
Oltre a crontab, l'utente root può anche aggiungere lavori cron a etc/cron.d directory. È più adatto per eseguire script per installazioni e aggiornamenti automatici.
Tieni presente che l'utente che aggiunge lavori cron a questa directory deve avere accesso come root ed essere conforme alle convenzioni di denominazione di run-parts.
In alternativa, un utente root può spostare i propri script nelle seguenti directory per programmarne l'esecuzione:
- /etc/cron.hourly/ – Esegui tutti gli script una volta all'ora
- /etc/cron.daily/ – Corri una volta al giorno.
- /etc/cron.weekly/ – Corri una volta alla settimana.
- /etc/cron.monthly/ – Esegui una volta al mese.
Sintassi Crontab
Per creare un lavoro cron, devi prima comprendere la sintassi e la formattazione di cron. In caso contrario, potrebbe non essere possibile impostare correttamente i lavori cron.
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 a 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, desideri impostare un processo cron 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 il Giorno del mese e Mese campi significano tutti i valori possibili. Ciò significa che l'attività deve essere ripetuta indipendentemente dalla data o dal mese. Infine, 5 rappresenta il venerdì. La serie di numeri è quindi seguita dalla posizione dell'attività stessa.
Se non sei sicuro di scrivere manualmente la sintassi di 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 tuo comando cron, la conoscenza degli operatori di cron job è essenziale. Consentono di specificare quali valori si desidera inserire in ciascun campo. Devi usare 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 processo cron venga eseguito ogni minuto, scrivi un asterisco nel Minuto campo.
- Virgola (,) . Utilizzare questo operatore per elencare più valori. Ad esempio, scrivendo 1,5 nel Giorno della settimana campo 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 mese campo farà il lavoro.
- Separatore (/) . Utilizzare questo operatore per dividere un valore. Ad esempio, se desideri eseguire uno script ogni dodici ore, scrivi */12 nell'Ora campo.
- Ultimo (L) . Questo operatore può essere utilizzato nei campi giorno del mese e giorno della settimana. Ad esempio, scrivendo 3L nel campo del giorno della settimana si intende l'ultimo mercoledì di un mese.
- Giorno feriale (W) . Utilizzare questo operatore per determinare il giorno della settimana più vicino da una determinata ora. Ad esempio, se il 1° di un mese è un sabato, si scrive 1W nel campo del giorno del mese eseguirà il comando il lunedì successivo (il 3 ).
- Hash (#). Utilizza 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 (?) . Utilizza questo operatore per inserire "nessun valore specifico" per i campi "giorno del mese" e "giorno della settimana".
Stringhe speciali di Cron Job
Stringhe speciali vengono utilizzate per pianificare i lavori cron a intervalli di tempo senza che l'utente debba capire l'insieme logico di numeri da inserire. Per usarli, scrivi un @ seguito da una semplice frase.
Ecco alcune utili stringhe speciali che puoi usare nei comandi:
- @ogni ora . Il lavoro verrà eseguito una volta all'ora.
- @giornaliero o @mezzanotte . Queste stringhe eseguiranno l'attività ogni giorno a mezzanotte.
- @settimanale . Usalo per eseguire lavori una volta alla settimana a mezzanotte di domenica.
- @mensile. Questa stringa speciale esegue un comando una volta il primo giorno di ogni mese.
- @annuale . 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.
Importante! Ricorda di prestare la massima attenzione durante la pianificazione di processi cron sensibili al fuso orario.
Esempi di sintassi Cron
Ora che sai qual è l'aspetto corretto della sintassi di cron, esamineremo alcuni esempi per aiutarti a capirlo meglio.
Tieni presente che l'output di cron verrà automaticamente inviato al tuo account di posta elettronica locale. Se desideri interrompere la ricezione di 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 email. Ecco un esempio:
MAILTO="[email protected]" 0 3 * * * /root/backup.sh >/dev/null 2>&1
Dai un'occhiata ai seguenti comandi di esempio per comprendere meglio la sintassi di cron:
Esempio | Spiegazione |
0 0 * * 0 /root/backup.sh | Esegui un backup ogni domenica a mezzanotte. |
0 * * * 1 /root/clearcache.sh | Svuota la cache ogni ora il lunedì. |
0 6,18 * * * /root/backup.sh | Esegui il backup dei dati due volte al giorno alle 6:00 e alle 18:00. |
*/10 * * * * /scripts/monitor.sh | Esegui il monitoraggio ogni 10 minuti. |
*/15 * * * * /root/backup.sh | Esegui un backup ogni 15 minuti. |
* * 20 7 * /root/backup.sh | Esegui un backup ogni minuto il 20 luglio. |
0 22 * * 1-5 /root/clearcache.sh | Svuota la cache tutti i giorni feriali (dal lunedì al venerdì) alle 22:00. |
0 0 * * 2 * /root/backup.sh | Esegui un backup a mezzanotte ogni martedì. |
* * * 1,2,5 * /scripts/monitor.sh | Esegui il monitoraggio ogni minuto nei mesi di gennaio, febbraio e maggio. |
10-10/10 5 * * * /root/clearcache.sh | Svuota la cache ogni 10 minuti alle 5 del mattino, a partire dalle 5:10. |
0 8 1 */3 * /home/user/script.sh | Fai eseguire l'attività trimestralmente il primo giorno del mese alle 8:00. |
0 * * * * /root/backup.sh | Crea un backup ogni ora. |
* * * * * /scripts/script.sh; /script/scrit2.sh | Includi più attività in un singolo lavoro cron. Utile per programmare più attività da eseguire contemporaneamente. |
@reboot /root/clearcache.sh | Svuota la cache ogni volta che accendi il sistema. |
0 8 1-7 * 1 /scripts/script.sh | Esegui uno script il primo lunedì di ogni mese, alle 8:00. |
5 4 * * 0 /root/backup.sh | Crea un backup ogni domenica alle 4:05. |
15 9 1,20 * * /scripts/monitor.sh | Esegui il monitoraggio alle 21:15 il 1° e il 20 di ogni mese. |
@hourly /scripts/monitor.sh | Esegui il monitoraggio ogni ora. |
0 0 1,15 * 3 /scripts/script.sh | Esegui uno script a mezzanotte ogni mercoledì tra l'1 e il 15 di ogni mese. |
15 14 1 * * /root/clearcache.sh | Svuota la cache il primo giorno di ogni mese alle 14:15. |
00 17-08 * * 1-5 bin/check-db-status | Controlla lo stato del database tutti i giorni dal lunedì al venerdì ogni ora dalle 20 alle 17. |
15 6 1 1 * /root/backup.sh | Esegui un backup ogni 1 gennaio alle 6:15. |
0 0 * * * /scripts/monitor.sh | Esegui lo script di monitoraggio una volta al giorno a mezzanotte. |
0 0 15 * * /root/clearcache.sh | Svuota la cache a mezzanotte del 15 di ogni mese. |
* * * * 1,5 /scripts/monitor.sh | Esecuzione del monitoraggio ogni lunedì e venerdì. |
Autorizzazioni Cron
È possibile creare o modificare i seguenti due file per consentire o impedire agli utenti di utilizzare il file cron del sistema:
- /etc/cron.allow – se cron.allow esiste, dovrebbe contenere il nome di un utente per consentire loro di utilizzare i lavori cron.
- /etc/cron.deny – se cron.allow non esiste ma cron.deny fa, l'utente che vuole usare i lavori cron non deve essere elencato all'interno del file.
Conclusione
L'impostazione di lavori programmati automaticamente è una soluzione pratica che ti impedisce di dimenticare le attività importanti.
I lavori Cron sono un modo eccellente per gli amministratori di sistema e gli sviluppatori Web di gestire attività ripetitive. Tutto quello che devi fare è inserire i comandi appropriati e scegliere il tempo di esecuzione corretto.
Per pianificare un processo cron, utilizzare 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.
Se stai cercando una soluzione specifica per WordPress, dai un'occhiata al nostro tutorial sul cron job di WordPress.
Ci auguriamo che questo articolo ti abbia aiutato a comprendere le basi dell'utilizzo dei lavori cron per pianificare le attività. Se hai domande, sentiti libero di lasciarle nella sezione commenti.