Come pianificare le attività in Linux con Cron e Crontab

Come pianificare le attività in Linux con Cron e Crontab / Linux

Lo sapevi Blade Runner è impostato nel 2019? Sono passati tre anni! Per non parlare di Ritorno al futuro 2, dove viaggiano nel tempo fino al 2015. Ma non abbiamo macchine volanti e non ci sono replicanti tra di noi (per quanto ne so).

È facile sentirsi delusi dalla tecnologia attuale quando lo paragoniamo alle rappresentazioni immaginarie del futuro. Eppure, oggigiorno i nostri telefoni, computer e persino case possono fare cose stupefacenti 5 Progetti di automazione domestica fai-da-te per iniziare la tua Smart Home 5 Progetti di automazione domestica fai-da-te per iniziare la tua Smart Home Quando si tratta di creare case intelligenti, la maggior parte delle persone solo non so da dove cominciare. Qui ci sono cinque progetti base per principianti che puoi costruire in questo momento. Leggi di più . La capacità di automatizzare le attività è una di queste.

Ogni utente Linux può trarre vantaggio dalle attività di pianificazione, indipendentemente dal fatto che siano correlate al sistema (come la pulizia dei vecchi registri e l'aggiornamento dei pacchetti Come aggiornare One o Tutte le app su Linux in secondi Come aggiornare una o tutte le app su Linux in secondi Il terminale Linux semplifica l'aggiornamento di una singola app sul tuo computer o applica tutti gli aggiornamenti disponibili contemporaneamente. Ecco come, per saperne di più) o per servire l'utente (controllare la posta elettronica, scaricare i podcast ...). Gli utenti di Windows hanno avuto l'Utilità di pianificazione 4 Attività noiose che è possibile automatizzare con l'Utilità di pianificazione di Windows 4 Attività noiose che è possibile automatizzare con l'Utilità di pianificazione di Windows Il tempo è troppo prezioso per essere sprecato con attività ripetitive. Lascia che ti mostriamo come automatizzare e pianificare le attività. Abbiamo anche alcuni grandi esempi. Leggi di più da Windows 95. L'utility che fa lo stesso lavoro su Linux si chiama cron, e qui spiegheremo come usarla.

Che cos'è Cron?

Cron è un servizio di sistema che viene eseguito in background, controlla le attività pianificate e le esegue se ne trova. I compiti - anche chiamati “cron jobs 5 Idee principianti per l'installazione di Linux per lavori di Cron e script di shell 5 Idee per l'installazione di Linux principianti per lavori di Cron e script di shell Con bash scripting, è possibile eseguire una serie complessa di attività in un unico passaggio, quindi è perfetto per esigenze elaborate e ripetitive. È anche un ottimo modo per conoscere il terminale. Leggi di più ” - sono definiti in speciali file di configurazione (crontabs), che cron esegue la scansione ogni minuto. Diverse versioni di cron possono essere trovate su diverse distribuzioni Linux. Ad esempio, il fork di cron di Fedora si chiama cronie, e ci sono anche fcron, bcron e dcron. Alcuni hanno funzionalità extra, mentre altri sono più focalizzati sulla sicurezza, ma sono tutti basati sulla stessa idea.

Questa guida è scritta per vixie-cron, che è la versione più diffusa di cron e quella che troverete su Ubuntu e le sue derivate. Sebbene la maggior parte delle istruzioni si applichino anche ad altre implementazioni di cron, potrebbero esserci piccole differenze, quindi controlla i loro manuali se decidi di cambiare.

Cos'è un Crontab?

Se sei seriamente intenzionato a gestire il tuo tempo, probabilmente hai un calendario di qualche tipo Organizza il tuo tempo con queste 4 app per il calendario Linux Organizza il tuo tempo con queste 4 app per il calendario Linux Ha senso usare ancora un'app per il calendario? Lo pensiamo, soprattutto per consentire l'accesso agli eventi su qualsiasi dispositivo sincronizzato. Queste app di calendario Linux sono particolarmente utili. Ulteriori informazioni: un'app o almeno un pezzo di carta. Crontab è molto simile al calendario del tuo computer. Contiene le informazioni sulle attività pianificate, comunicando a cron quali comandi eseguire a che ora.

In effetti, molti crontabs sono sul tuo sistema. Ogni utente ha il proprio crontab, incluso root (l'amministratore). I crontabs dell'utente sono memorizzati in / Var / spool / cron / crontab /. Il crontab -l comando elencherà il file crontab per l'utente corrente. Puoi controllare il crontab di root con sudo crontab -l.

Inoltre, c'è il file crontab di sistema / Etc / crontab che viene utilizzato per attività a livello di sistema. Solitamente, prendono la forma di script eseguibili, di proprietà della radice collocati in /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/, e /etc/cron.monthly/ cartelle, e su alcune distribuzioni, il /etc/cron.d/ cartella pure. In generale, non dovresti avere a che fare con queste attività, poiché la maggior parte di esse viene creata automaticamente dalle applicazioni installate.

Come pianificare le attività con Cron

Sembra semplice: per pianificare le attività, aggiungili al tuo crontab. Poiché crontab è un file di configurazione speciale, non è consigliabile modificarlo manualmente. Invece, usa il crontab -e comando. Per modificare i crontabs di root o di altri utenti, esegui il comando con privilegi amministrativi e aggiungi il loro nome utente dopo l'opzione -u:

sudo crontab -u root -e
sudo crontab -u nome utente -e

Il file crontab ha due sezioni. Il primo contiene le variabili di ambiente che vengono impostate automaticamente. È possibile modificare in modo sicuro le variabili PATH, HOME e SHELL e modificare la variabile MAIL.

La seconda parte del file è l'effettiva “orario” con le tue attività pianificate. Ogni attività occupa una riga (riga) nella tabella, con colonne che rappresentano i seguenti valori:

Per pianificare correttamente le attività, è necessario conoscere un po 'della sintassi crontab:

  • I numeri devono essere numeri interi (numeri interi) e puoi usare l'asterisco (*) in qualsiasi colonna come carattere jolly, che significa “ogni minuto / giorno / mese ... ”.
  • Nel “Giorno del mese” colonna, fare attenzione a non impostare una data che non si verifica nel mese specificato in “Mese” colonna (ad esempio, il 30 febbraio).
  • Tutti e due “Mese” e “Giorno della settimana” le colonne accettano i nomi brevi per i mesi e i giorni, rispettivamente, e non fanno distinzione tra maiuscole e minuscole.
  • Nel “Giorno della settimana” colonna, sia 0 che 7 stanno per domenica. Il “Ora” colonna richiede il “Leva militare” (24 ore), ma non è possibile utilizzare il numero 24 - invece, 0 sta per 12 am. Questo perché i valori per minuto, ora e giorno della settimana iniziano da 0 anziché da 1.
  • I secondi non sono supportati, quindi non è possibile pianificare un'attività in un secondo particolare.

Quello che puoi fare è pianificare intervalli di tempo compresi usando un trattino (14-22 sotto “Ore” eseguirà l'attività continuamente dalle 2:00 alle 10 di sera) o eseguire una singola operazione più volte definendo un elenco separato da virgole (1,3,5 sotto “Giorno della settimana” eseguirà l'attività lunedì, mercoledì e venerdì).

Nel frattempo, i valori dei passaggi, sono rappresentati da una barra (/), e indicano la quantità di salti in un intervallo; per esempio, 3-20 / 3 sotto “Ore” eseguirà l'operazione ogni tre ore dalle 3:00 alle 20:00. Ciò è utile quando si desidera ripetere le attività ogni X ore, poiché è possibile combinare un asterisco e un passo (* / X). È possibile combinare intervalli con elenchi e passaggi con intervalli purché si utilizzino numeri. In altre parole, combinazioni come “Gen-Mar” o “Mar, da venerdì a domenica” non sono consentiti.

In alternativa, invece di impostare un valore per ogni colonna, è sufficiente scrivere @weekly, @yearly, @monthly, @daily o @hourly all'inizio di una riga, seguito da un comando. Programmato in questo modo, le attività verranno eseguite alla prima istanza possibile, quindi @weekly eseguirà a mezzanotte il primo giorno della settimana. Se si desidera eseguire un'attività immediatamente all'avvio del sistema (ri), utilizzare il comando @reboot.

In questo esempio, abbiamo programmato un backup ogni giorno alle 08:20 e alle 20:20. Lo sfondo cambia automaticamente ogni tre giorni alle 19:00 e uno script controlla i nuovi podcast Le 10 migliori app per la gestione dei podcast su Linux Le 10 migliori app per la gestione dei podcast su Linux Linux non ha una grande scelta di client podcast, ma non preoccuparti: quasi tutti i lettori di musica moderna per Linux possono fungere da podcatcher. Diamo un'occhiata alle opzioni. Leggi di più ogni lunedì alle 10:20 e alle 20:20. Un promemoria per il compleanno è impostato per il 25 marzo e viene eseguito ogni 30 minuti entro il periodo di tempo specificato. Infine, uno script controlla la posta ogni 15 minuti dalle 8 alle 20, ma solo nei giorni lavorativi. Sei libero di organizzare il tuo crontab con spazi e tabulazioni tra le colonne, ma non all'interno di essi (non inserire spazi tra virgole, trattini e barre).

Se tutto ciò sembra troppo complicato, non preoccuparti: puoi sempre fare affidamento su Internet. Strumenti come Crontab Generator, Crontab.guru e Corntab consentono di creare processi cron senza conoscere alcuna sintassi crontab. Mostrano quando verrà eseguito il lavoro successivo e forniranno modelli per espressioni di uso comune. Crontab.guru è il migliore del gruppo perché consente di testare in tempo reale la sintassi crontab, in modo da poter vedere immediatamente come le modifiche influenzeranno la pianificazione.

Come verificare se i lavori cron sono eseguiti

Cron dovrebbe funzionare silenziosamente in background e lasciarti lavorare indisturbato mentre si prende cura dei tuoi compiti. Ma come puoi assicurarti che funzioni davvero?

Cron ha una funzione di notifica e-mail integrata, ma richiede almeno un semplice server di posta locale. Come funziona un server di posta elettronica? [Tecnologia spiegata] Come funziona un server di posta elettronica? [Tecnologia spiegata] Dietro ogni e-mail c'è un potente motore chiamato server e-mail che invia le e-mail attraverso Internet. Leggi di più . Non molti utenti domestici sono disposti a configurarlo e non molte distribuzioni lo forniscono per impostazione predefinita (ad esempio, Ubuntu no). Il modo più veloce per controllare su cron è eseguire la scansione del registro di sistema con questo comando:

cat / var / log / syslog | grep -i cron

L'opzione -i rende la nostra query senza distinzione tra maiuscole e minuscole. È possibile che cron abbia il proprio file di registro da qualche parte / Var / log /, quindi guarda lì se questo comando non riesce a produrre risultati utili.

Se è necessario salvare l'output di un particolare cron job, è possibile reindirizzare a un file. Fornisci il percorso e il nome del file nell'ultima colonna di crontab, dopo il comando che vuoi eseguire:

30 * * * * / usr / bin / yourcommand> /home/username/logfile.txt

L'uso di un singolo simbolo> sovrascrive il file ogni volta che viene eseguito il comando. Per evitare ciò, usare >> invece - aggiunge l'output al file esistente.

Cosa succede se Cron non funziona?

Potrebbe succedere che tu abbia aggiunto alcune attività, controllato i log di sistema e scoperto che non stanno eseguendo come dovrebbero. Ecco alcune cose che dovresti prendere in considerazione - e fare attenzione - quando cerchi di risolvere il problema.

Il servizio cron è in esecuzione?

Come sai, il demone cron dovrebbe essere in esecuzione in background. Assicurati che questo sia davvero il caso. Il servizio è chiamato crond o solo cron.

Per le distribuzioni usando systemd:

systemctl status cron

Per le distribuzioni utilizzando Upstart:

servizio cron status

Se la tua distribuzione utilizza il “vecchio” Approccio System V init, elenca tutti i servizi con:

lista initctl

e vedere se cron è elencato.

Ti è persino permesso avere un file crontab?

Controlla il tuo /eccetera cartella per i file denominati cron.allow e cron.deny. Su Ubuntu, nessuno dei due dovrebbe esistere, il che significa che tutti gli utenti possono gestire i lavori cron. Tuttavia, se c'è un cron.allow file, deve contenere il tuo nome utente. Al contrario, se il cron.deny il file esiste, il tuo nome utente non dovrebbe esserci. Lasciando il cron.deny file vuoto significa che solo root e utenti elencati in cron.allow può avere file crontab.

Le tue variabili sono impostate correttamente?

Crontab imposta automaticamente la tua variabile SHELL su / Bin / sh. Tuttavia, se il tuo guscio preferito è il pesce 7 Motivi per cui dovresti installare la conchiglia di pesce 7 Ragioni per cui dovresti installare la conchiglia di pesce Non ti piace come funziona il tuo terminale Linux? Perché non installare una nuova shell? Uno di questi è il pesce, che introduce caratteristiche che avrebbero dovuto diventare comuni, ma non lo erano. Diamo un'occhiata. Leggi di più o bash, dovresti cambiare la variabile SHELL. Allo stesso modo, la variabile PATH contiene solo poche directory per impostazione predefinita. Qui è dove crontab cerca i comandi di Linux. Se il tuo cron job non sta funzionando, potrebbe essere perché crontab no “vedere” il comando che hai usato Per evitare ciò, aggiungi le directory contenenti i comandi alla variabile PATH, separate da due punti:

PATH = / opt / myapp / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin

Se non vuoi modificare questo nel tuo crontab, puoi definire queste variabili nello script che vuoi eseguire come cron job.

Il tuo crontab è formattato al punto?

La sintassi di Crontab non è esattamente scorrevole. Anche se lo verifichi con gli strumenti online menzionati in precedenza, un errore minore potrebbe comunque impedire a cron di eseguire i tuoi lavori. Fai attenzione a:

  • aggiungi una riga vuota alla fine del file crontab
  • sfuggire al segno% con una barra rovesciata se il comando lo include
  • scrivi commenti come linee separate che iniziano con #. Non scrivere commenti sulla stessa riga delle variabili di ambiente o accanto ai comandi di cron job.

Dovresti davvero usare il terminale?

Assolutamente no. Gli utenti di KDE possono pianificare lavori cron con KCron, che è accessibile da Impostazioni di sistema> Utilità di pianificazione modulo. Con un'interfaccia semplice che ti permette di scegliere e modificare tutto in pochi clic del mouse, KCron è un piacere da usare.

Se preferisci GNOME, allora GNOME Schedule fa per te. L'approccio è simile, sebbene l'interfaccia sia, presumibilmente, leggermente diversa. Offre una modalità avanzata per le modifiche a grana fine e viene fornito con un'applet del pannello da cui è possibile gestire le attività direttamente.

Dovresti essere a conoscenza di altre soluzioni, come Crontab-UI e Minicron. Sono più adatti agli utenti che gestiscono più macchine e lavori cron e una delle loro funzionalità più interessanti è l'interfaccia basata sul Web.

Ci sono eventuali alternative Cron?

Mentre cron è praticamente il programmatore di compiti standard per Linux Pianifica e automatizza le attività in Linux con Gnome Pianifica Pianifica e automatizza le attività in Linux Con Gnome Pianifica Leggi di più, certamente non è l'unico. Il comando at è perfetto per i lavori rapidi, che possono essere programmati direttamente dalla riga di comando, senza file di configurazione speciali. Se hai bisogno di più, c'è GNUbatch, che introduce la nozione di dipendenza. Con GNUbatch è possibile impostare condizioni specifiche per ogni lavoro o eseguire un'attività pianificata in base a una precedente. Qualcosa di simile può essere ottenuto con i timer di sistema. Sebbene sia meno pratico da configurare di cron, i timer di sistema possono ricordare se un task ha saltato il suo programma mentre il computer era spento ed eseguirlo la prossima volta che è acceso.

Questo è qualcosa che cron non può fare da solo. In quanto tale, è adatto a server e computer che sono costantemente in esecuzione, ma non eseguirà un lavoro pianificato mentre il computer era spento. È qui che entra in gioco l'anacron. Tecnicamente non è un “alternativa” o una sostituzione per cron. Anacron, invece, integra cron e dovrebbe essere usato insieme ad esso, il che è il caso di molte distribuzioni Linux, inclusi i prodotti basati su Ubuntu e Ubuntu. Anacron registra quando un compito è stato eseguito l'ultima volta e controlla se ci sono state delle istanze perse mentre il sistema è stato spento. Li eseguirà quando riaccendi il computer, ma ogni attività può essere eseguita solo una volta al giorno.

Alcune versioni di cron, come fcron, offrono le funzionalità di anacron per impostazione predefinita. Gli utenti esperti potrebbero voler guardare Hcron o SuperCron, che apportano molti miglioramenti alle funzioni di cron di base, ma sono anche piuttosto difficili da gestire.

E tu? Come organizzi le tue attività digitali? Quali attività pianifichi su Linux? Condividi le tue storie e i tuoi consigli per l'utilizzo di cron nei commenti.

Immagine di credito: scheda di programma da Gonzalo Aragon via Shutterstock

Scopri di più su: Linux.