Cron è un'utilità della riga di comando efficace e popolare utilizzata per pianificare un'ampia gamma di attività in un momento specifico senza interazione dell'utente. Le attività pianificate sono note come lavori cron mentre il crontab è l'elenco del file contenente i lavori cron.
In questo articolo, spiegheremo con vari esempi di esempi che puoi modificare e utilizzare il file crontab per pianificare le attività nel sistema Debian 10.
Cron può essere utilizzato per automatizzare le attività nei seguenti scenari:
- Esecuzione di backup pianificati,
- Controllo dello spazio su disco a un intervallo specifico,
- Esecuzione della manutenzione automatica,
- Rimozione periodica di file indesiderati,
- Esecuzione della diagnostica di rete
Sintassi
È più facile lavorare con cron, una volta compresa la sua sintassi. La sintassi generale per usare cron è:
* * * * /percorso/di/script.shCiascuno dei campi corrisponde a quanto segue:
Minuto (0-59) Ora (0-24) Giorno_del_Mese (1-7) Mese_dell_Anno (1-12)Comando Giorno_della_settimana (0-6)
Installazione di Cron
Cron è preinstallato in Debian 10. Tuttavia, se non è presente nel tuo sistema, esegui il seguente comando per installarlo:
$ sudo apt install cronVisualizza crontab
Per visualizzare il file crontab, utilizzare il seguente comando:
$ crontab -lPer visualizzare il file crontab di un particolare utente, utilizza il seguente comando:
$ sudo crontab -u utente -lModifica crontab
Per modificare il file crontab dell'utente corrente:
$ crontab -ePer modificare il file crontab di un particolare utente:
$ sudo crontab -u utenteSe stai modificando il file crontab per la prima volta, ti verrà chiesto di scegliere un editor:
Una volta selezionato l'editor, apparirà la seguente finestra.
Ad esempio, vuoi eseguire uno script di backup chiamato "backup.sh" che si trova nella directory dei documenti ogni giorno alle 2:00. Per fare ciò, dovrai aggiungere la seguente riga nel tuo file crontab:
0 2 * * * /Documenti/backup.sh
Nella finestra sopra, puoi aggiungere i tuoi lavori cron uno per uno. Una volta terminato, salva ed esci dal file, dopodiché tutti i lavori cron verranno eseguiti automaticamente all'intervallo specificato.
Rimuovi crontab
Per rimuovere il file crontab, inserisci il seguente comando in Terminale:
$ crontab -rOra passiamo a una serie di esempi di lavori cron su una macchina Linux.
1. Esegui un cron job ogni minuto
Per eseguire un cron job ogni minuto, aggiungi la seguente riga nel tuo file crontab:
* * * * * /percorso/per/script.sh2. Esegui un cron job ogni 10 minuti
Per pianificare un cron job da eseguire ogni 10 minuti, aggiungi la seguente riga nel tuo file crontab.
*/10 * * * * /percorso/per/script.sh3. Esegui un cron job in mesi specifici
Per pianificare un cron job da eseguire in mesi specifici e.g. Marzo, agosto, dicembre, aggiungi il cron job nel tuo file crontab nel seguente modo:
* * * gennaio, maggio, agosto * /percorso/per/script.sh4. Esegui un cron job nei giorni selezionati
Se desideri che il tuo cron job venga eseguito nei giorni selezionati, supponiamo che domenica e venerdì alle 17:00, dovrebbe apparire come segue.
0 17 * * dom,ven /percorso/per/script.sh5. Esegui un cron job ogni giorno a un'ora specifica
Per pianificare un cron job da eseguire ogni giorno a un'ora specifica, diciamo alle 3 del mattino, aggiungi questa riga nel tuo file crontab.
0 3 * * * /percorso/di/script.sh6. Esegui un cron job in un giorno specifico
Per pianificare un cron job da eseguire in un giorno specifico, diciamo ogni domenica, aggiungi questa riga nel tuo file crontab.
0 0 * * SUN /percorso/per/script.shIl lavoro verrà eseguito alle 00:00 di ogni domenica.
7. Esegui più attività in un singolo cron job
Per pianificare più attività in un singolo cron job, aggiungi tutti gli script nel tuo file crontab separandoli con un punto e virgola.
* * * * * /percorso/di/script1.sh; /percorso/di/script2.sh8. Esegui un cron job su ogni nei giorni feriali
Per pianificare un cron job da eseguire ogni giorno della settimana dal lunedì al venerdì, dovrai aggiungere questa riga nel tuo file crontab.
0 0 * * 1-5 /percorso/a/script.shIl lavoro verrà eseguito alle 00:00 di tutti i giorni feriali.
9. Esegui un cron job due volte al giorno
Per pianificare un lavoro da eseguire due volte al giorno e.g. alle 6:00 e alle 15:00, dovrai aggiungere questa riga nel tuo file crontab:
0 6,15 * * * /percorso/di/script.sh10. Esegui un cron job ogni ora
Per pianificare un cron job da eseguire ogni ora al minuto 0, dovrai aggiungere questa riga nel tuo file crontab:
0 * * * * /percorso/di/script.shAd esempio, se l'ora corrente sono le 14:00, il lavoro verrà eseguito alle 15:00, alle 16:00 e così via.
11. Esegui un cron job ogni 3 ore
Per pianificare un cron job da eseguire ogni 3 ore al minuto 0, dovrai aggiungere questa riga nel tuo file crontab:
0 */3 * * * /percorso/di/script.shAd esempio, se l'ora corrente sono le 14:00, il lavoro verrà eseguito alle 17:00, alle 20:00 e così via.
12. Esegui cron job alle 16:00 il primo di ogni mese
Per pianificare un lavoro da eseguire il primo giorno di ogni mese alle 16:00, dovrai aggiungere questa riga nel tuo file crontab:
0 16 1 * * /percorso/di/script.shCorde in Crontab
Puoi anche usare le seguenti stringhe invece dei lunghi comandi ripetitivi.
@hourly- Esegui cron job ogni ora i.e. “0 * * * *“@midnight- Esegui cron job ogni giorno i.e. “0 0 * * *“
@giornaliero- come mezzanotte
@weekly- Esegui cron job ogni settimana, i.e. “0 0 * * 0“
@monthly- Esegui cron job ogni mese i.e. “0 0 1 * *“
@annually- Esegui cron job ogni anno i.e. “0 0 1 1 *“
@annuale- come @annuale
@reboot- Esegui cron job ad ogni avvio
Ad esempio, per eseguire il cron job ogni giorno nel primo minuto e nella prima ora, aggiungi la seguente riga:
@giornaliero /percorso/per/script.shAd esempio, per eseguire il cron job ogni volta che il server viene riavviato:
@reboot /percorso/per/script.shQuesto è tutto quello che c'è da fare! In questo articolo abbiamo imparato come automatizzare varie attività usando crontab nel sistema Debian. Utilizzando gli esempi precedenti, puoi pianificare qualsiasi tipo di lavoro da avviare senza alcuna interazione da parte dell'utente.