Questo articolo spiegherà la pianificazione delle attività e l'esecuzione di script a intervalli regolari utilizzando i lavori cron.
Cos'è Cron?
Cron è un programma di pianificazione delle attività che viene eseguito in background come un processo. Può essere utilizzato per eseguire periodicamente determinati lavori pianificati utilizzando il suo set di regole predefinito. Cron è preinstallato sulla maggior parte delle distribuzioni Linux o disponibile nei repository per essere installato manualmente.
Preset Cronron
Cron su Ubuntu viene fornito con una serie di pianificatori predefiniti. Puoi controllarli eseguendo il comando seguente:
$ ls /etc/cron.*Di solito queste cartelle sono "/etc/cron.ogni ora”, “/etc/cron.quotidiano”, “/etc/cron.mensile” e “/etc/cron.settimanalmente".
Basta inserire gli script desiderati in una di queste cartelle per eseguire attività automatizzate ogni ora, giornalmente, mensilmente o settimanalmente.
Nota che cron usa la shell "/bin/sh" per impostazione predefinita. Se vuoi usare "/bin/bash" come shell negli script cron, devi usare "!# /bin/bash” hashbang nella parte superiore del file di script o definire la shell come variabile “SHELL=/bin/bash” nella prima riga in uno script bash pianificato. L'override della variabile di ambiente "SHELL" funziona anche per l'editor crontab spiegato di seguito.
Non tutte le variabili di ambiente di sistema possono essere esposte ai lavori cron. Quindi è generalmente una buona idea definire manualmente importanti variabili d'ambiente in uno script pianificato da cron.
Crontab
Crontab ti consente di definire le tue attività pianificate. Puoi usarlo per configurare le pianificazioni cron diverse dalle quattro preimpostazioni cron standard spiegate sopra.
Per impostare un'attività pianificata in crontab, avvia prima l'editor crontab usando il comando seguente:
$ crontab -eOra alla fine del file, puoi aggiungere una voce nel seguente formato:
minuto ora giorno mese giorno della settimana /completo/percorso/a/script.shDove:
- minuto: qualsiasi valore nell'intervallo da 0 a 59
- ora: qualsiasi valore nell'intervallo da 0 a 23, 0 è mezzanotte
- giorno: qualsiasi valore nell'intervallo da 1 a 31
- mese: qualsiasi valore nell'intervallo da 1 a 12
- giorno della settimana: qualsiasi valore nell'intervallo da 0 a 6, 0 è domenica
La voce crontab di seguito prenderà uno screenshot del tuo desktop e lo memorizzerà nella tua home directory una volta alle 15:13 del 2 marzo più ogni martedì di marzo alle 15:13.
13 15 2 3 2 scrotoPer elencare tutte le voci crontab, usa il comando seguente:
$ crontab -lAltri esempi
Le attività di Cron possono essere spiegate al meglio attraverso esempi, quindi di seguito sono riportati alcuni esempi che acquisiranno periodicamente schermate del desktop e le memorizzeranno nella cartella principale.
Oltre alle cinque variabili di pianificazione, cron utilizza anche alcune stringhe speciali per pianificare i lavori. Queste stringhe sono:
- @hourly: il lavoro viene eseguito ogni ora
- @daily / @midnight: il lavoro viene eseguito ogni giorno
- @weekly: il lavoro viene eseguito una volta alla settimana
- @mensile: il lavoro viene eseguito una volta al mese
- @yearly / @anually: il lavoro viene eseguito una volta all'anno
- @reboot: il lavoro viene eseguito una volta ogni riavvio/accesso
La voce crontab di seguito acquisirà lo screenshot una volta ad ogni riavvio:
@reboot scrotoPuoi sostituire "@reboot" con qualsiasi altra stringa speciale menzionata sopra.
L'uso di un asterisco o di un carattere jolly al posto di una qualsiasi delle cinque variabili ripeterà il lavoro su tutte le nuove istanze di quella variabile. La voce seguente acquisirà uno screenshot ogni minuto:
* * * * * scrotoOgni ora:
0 * * * * scrotoTutti i giorni alle 18:00:
0 18 * * * scrotoOgni mese il 6 alle 18:00:
0 18 6 * * scrotoUtilizzare "/" per eseguire uno script a un intervallo periodico fisso di 30 minuti (viene eseguito ogni 30 minuti):
*/30 * * * * scrotoÈ possibile utilizzare variabili separate da virgole per definire l'esecuzione ripetuta dello script a intervalli regolari. L'esempio seguente prenderà uno screenshot del tuo desktop ogni 1°, 4° e 5° minuto di una nuova ora.
1,4,5 * * * * scrotoVerifica delle voci di Crontab
Definire le voci di crontab può essere complicato, ma il loro debug o la verifica se funzionano con i timestamp corretti è ancora più complicato. Un'opzione è utilizzare una macchina virtuale e registrare i timestamp di uno script in esecuzione periodicamente su un cron job includendo qualcosa come il comando "date" e reindirizzando l'output a un file di testo. Tuttavia, una soluzione migliore è utilizzare uno dei numerosi servizi di test dei lavori cron online disponibili sul web. Consiglio di fornire il sito Web di cron tester disponibile Qui un tentativo.
Conclusione
L'esecuzione di lavori cron è un modo eccellente per automatizzare attività ripetute, specialmente sui server. Lo strumento è estremamente potente e personalizzabile. Tuttavia, è importante accertarsi che la definizione dello scheduler funzioni correttamente, specialmente se ci sono attività mission-critical.