Crontab - Se al momento disponi di un sito Web pesante per server, potresti voler eseguire determinati processi come l'arricchimento dei dati o la generazione di miniature in background, senza interferire con l'interfaccia utente. Bene, Linux Crontab ha un buon programma che fa esattamente questo: Cron.

Un'introduzione a Cron

Quindi cos'è questo programma? Cron è classificato come un demone che può eseguire comandi programmati. Viene avviato automaticamente quando si accede ai livelli di esecuzione multiutente, da /etc/init.d. Cerca nell'area spool in / var / spool / cron / crontabs per i file crontab che prendono il nome dagli account in / etc / passwd. Per accedere ai crontab in questa directory, è necessario utilizzare il comando crontab invece di accedervi direttamente. Cron può anche leggere il leggero diverso formato di / etc / crontab, così come i file in /etc/cron.d.

Una volta configurato, Cron si sveglia ogni minuto, esamina i crontab di Linux memorizzati e controlla il comando per vedere se c'è qualcosa da eseguire. Se viene eseguito un comando e viene generato l'output, l'output viene quindi inviato al proprietario del crontab o all'utente nella variabile MAILTO nel crontab. Le copie secondarie del cron che esegue questi processi sono denominate in maiuscolo, che vedrai nell'output ps e syslog.

Cron verifica inoltre ogni minuto la presenza di modifiche nel modtime della directory di spool. Se ci sono cambiamenti, esamina quindi il modtime di tutti i crontab di Linux e ricarica quelli che sono cambiati. Di conseguenza, cron non deve riavviarsi quando viene modificato un file crontab.

Quando l'orologio viene cambiato di tre ore o meno, esistono considerazioni speciali come all'inizio e alla fine dell'ora legale. Se il tempo passa, i lavori da eseguire nel tempo saltato verranno modificati per essere eseguiti subito dopo la modifica. Dall'altro lato, se il tempo si sposta indietro, i lavori che cadono nel tempo ripetuto non verranno ripetuti.

Sono interessati solo i lavori eseguiti a un'ora specifica anziché i lavori orari o quelli contrassegnati con '*' nell'identificatore minuti / ora. I lavori specificati con macchine selvatiche vengono eseguiti immediatamente in base al nuovo orario. In caso di cambio dell'orologio superiore a tre ore, il nuovo orario viene immediatamente utilizzato.

In Red hat e Debian, cron tratta i file cron.d come estensioni del file crontab di Linux poiché seguono il formato speciale del file, il che significa che includono il campo utente. Questa funzione mira a consentire pacchetti che richiedono un controllo di pianificazione più preciso rispetto alle directory giornaliere, mensili o settimanali. Tali file dovrebbero idealmente essere nominati in base ai pacchetti dei loro fornitori. I file devono essere conformi alla convenzione di denominazione utilizzata per le parti di esecuzione, in quanto devono consistere esclusivamente di lettere maiuscole e minuscole, cifre, trattini e caratteri di sottolineatura. I file nella directory cron.d vengono monitorati per le modifiche, proprio come la directory crontab di Linux. Per comandi come / bin / ls, assicurati di usare nomi di percorso assoluti per chiamare il comando giusto.

Un'introduzione a Linux Crontab

Ora che conosci i dettagli di cron, diamo un'occhiata da vicino a Linux Crontab, che è un programma per installare, disinstallare o elencare le tabelle per guidare il demone stesso. Ogni utente può avere un proprio crontab Linux e i file sono disponibili nella directory crontabs, ma non sono pensati per l'editing diretto.

Qualsiasi comando dato in un crontab di Linux di un utente verrà eseguito come utente proprietario. Schede, spazi iniziali e linee vuote sono in genere ignorati. Le righe che hanno un cancelletto come primo carattere non spaziale vengono ignorate poiché vengono trattate come commenti. Vale la pena notare che i commenti non sono consentiti all'interno delle stesse righe di comandi cron poiché verranno letti come parte del comando. Allo stesso modo, i commenti non sono consentiti anche sulle righe con impostazioni delle variabili di ambiente.

In un crontab di Linux, una linea attiva con un comando cron o un'impostazione della variabile di ambiente, che è nella forma "nome = valore", dove è possibile aggiungere spazi se necessario attorno al segno uguale a Eventuali spazi non iniziali successivi fanno parte del valore del nome. La stringa del valore può essere inserita tra virgolette singole o doppie per conservare il trailing o gli spazi vuoti iniziali. Non viene analizzato per le sostituzioni ambientali, pertanto è possibile che righe come "PATH = $ HOME / bin: $ PATH" non funzionino come previsto.

Molte impostazioni ambientali vengono automaticamente configurate da cron, come HOME e LOGNAME che vengono impostati dalla riga passwd dell'utente e SHELL impostato su / bin / sh e PATH impostato su / usr / bin: / bin. Puoi sovrascrivere PATH, SHELL e HOME con le impostazioni crontab. LOGNAME non può essere modificato, tuttavia, poiché è l'utente da cui è in esecuzione il lavoro. Sui sistemi BSD, questa variabile può essere chiamata USER, nel qual caso verrà impostato anche USER.

Se l'invio di mail fa parte dei comandi in esecuzione nel crontab di Linux, cron guarderà anche MAILTO. Se la variabile è definita e non vuota, viene inviata una mail all'utente indicato. Ma se è vuoto, non viene inviata alcuna posta e viene invece inviata al proprietario del crontab di Linux. Se il file cron.allow è disponibile, allora devi essere elencato in esso per usare questo comando. Se questo file non esiste ma esiste un file cron.deny, allora dovresti essere rimosso da quel file per usare il comando. Se nessuno dei file esiste, solo il superutente sarà in grado di utilizzare il comando in base ai parametri dipendenti dal sito. In alternativa, tutti gli utenti saranno in grado di usare il comando, come nel caso dei sistemi Debian standard.

Se l'opzione –u è disponibile, fornisce il nome utente il cui crontab di Linux richiede modifiche. Se non specificato, crontab esamina il crontab dell'utente che esegue il comando. È importante usare questa opzione sempre per motivi di sicurezza quando si esegue all'interno di su, dal momento che crontab di Linux può essere confuso da su. L'opzione -l è disponibile per la visualizzazione del crontab corrente sull'output standard, mentre l'opzione -r rimuove il crontab corrente. Il comando -e viene usato per modificare l'attuale crontab di Linux usando gli editor specificati dalle variabili ambientali VISUAL o EDITOR. Non è possibile utilizzare alcun editor che scolleghi e ricrea il file; hai bisogno di un editor che modifichi il file in atto. Dopo essere uscito dall'editor, il crontab di Linux ottimizzato verrà installato automaticamente.

Il modulo pam_env è anche supportato da cron sul sistema Debian GNU / Linux, caricando l'ambiente come specificato nel file del modulo. Tuttavia, va notato che l'impostazione PAM non sostituisce le impostazioni sopra menzionate o le impostazioni del file crontab. Se si desidera un PERCORSO diverso dalla posizione del cestino, è necessario configurarlo nel file crontab. Cron, per impostazione predefinita, invierà messaggi di posta elettronica utilizzando il tipo di contenuto "text / plain" con il set di caratteri impostato nel set di codici / mappa di caratteri della locale in cui è stato avviato cron, che è la locale di sistema predefinita senza alcuna variabile di ambiente impostata o le impostazioni internazionali impostate dalle variabili. Puoi aggiungere le tue codifiche di caratteri per l'output di posta impostando le variabili 'Content_Transfer_Encoding' e 'Content_Type' nei crontab in modo che corrispondano alle intestazioni di posta dei nomi.

Corsi consigliati

  • Corso di tecniche online Anova R Studio
  • Formazione sulla certificazione in AngularJS
  • Corso di certificazione ISTQB livello 1
  • Formazione sulla certificazione dei fondamenti dei test software

Lavorando su Crontab

Il comando crontab, presente nei sistemi operativi Unix-like e Unix, è accessibile tramite un terminale. Per vedere quale crontab è attualmente in esecuzione, apri un terminale sul tuo sistema ed esegui il seguente comando:

$ sudo crontab -l

Per modificare gli elenchi dei lavori crontab, è possibile utilizzare il comando seguente:

$ sudo crontab -e

Questo comando apre l'editor predefinito nel tuo sistema, che potrebbe essere pico o vio, per cambiare il crontab. Per salvare il lavoro crontab sul tuo file crontab, salva ed esci dall'editor. I lavori o i cronjob di Crontab possono essere scritti in questo modo:

* * * * * /bin/execute/this/script.sh

Esistono cinque asterischi nel comando sopra, ognuno dei quali rappresenta parti di date diverse per pianificare il lavoro. Eccoli:

  1. Minuto, compreso tra zero e 59
  2. Ora, che va da zero a 23
  3. Giorno del mese, compreso tra uno e 31
  4. Mese, da 1 a 12
  5. Giorno della settimana, che va da zero a sei, con zero che significa domenica

L'elenco sopra è stato dato in ordine, quindi devi prima definire il minuto, seguito da ora, giorno del mese, mese e giorno della settimana. È possibile mantenere l'asterisco se non si desidera definire alcun campo, ma è importante notare che il simbolo significa "ogni". Se lasci tutti e cinque i campi non definiti con gli asterischi intatti, significa che ogni minuto di ogni ora, in ogni giorno di ogni settimana e ogni mese.

Supponiamo che tu voglia semplicemente eseguire uno script ogni mezzogiorno di domenica, ecco cosa fai:

0 12 * * 0 /bin/execute/this/script.sh

Ora, lo script viene eseguito quando l'orologio di sistema raggiunge le 1200 ore ogni domenica, ogni settimana di ogni mese. Ora, se vuoi eseguire lo script ogni giorno lavorativo alle 12:00, ecco cosa scrivi:

0 12 * * 1-5 /bin/execute/this/script.sh

Cron esegue comandi quando i campi anno, mese, ora e minuti corrispondono all'ora corrente o quando almeno il giorno del mese e l'anno corrispondono all'ora corrente. Un campo può essere contrassegnato da un asterisco per indicare "primo-ultimo". Gli intervalli di numeri sono consentiti, con intervalli che sono due numeri separati da un trattino. L'intervallo specifico è inclusivo, quindi un intervallo di 8-11 per "ore" specifica l'esecuzione all'ottava, nona, decima e undicesima ora. Le liste sono anche supportate, con ogni numero separato da virgole, come '1, 2, 8, 9'. Puoi anche mescolare e abbinare, quindi potrebbe essere "1, 2, 8-11".

È possibile utilizzare i valori di passo insieme agli intervalli, con '/' dopo un intervallo che specifica un salto del valore del numero attraverso l'intervallo. Ad esempio, "0-11 / 2" nel campo delle ore specifica l'esecuzione del comando a ore alterne, che verrebbe scritto come un elenco in questo modo: "0, 2, 4, 6, 8, 10". I passaggi possono essere consentiti dopo un asterisco, come '* / 2' per indicare un comando da eseguire ogni due ore. Per i campi del giorno e del mese, puoi utilizzare le prime tre lettere di quel particolare giorno o mese e il caso non ha importanza. Tuttavia, gli elenchi e gli intervalli di nomi non sono supportati. Il giorno di esecuzione può essere specificato in due campi: giorno della settimana e giorno del mese. Se entrambi i campi sono limitati, il comando verrà eseguito quando uno dei campi corrisponde.

Il resto della riga è il campo "sesto", che specifica il comando da eseguire. La parte di comando della riga occupa fino a una nuova riga o fino a% carattere. Viene eseguito da sh o dalla shell specificata nella variabile SHELL del file crontab. La% nel comando verrà modificata in caratteri di nuova riga a meno che non vengano salvati con la barra rovesciata '\'. Tutti i dati dopo il primo segno% vengono inviati come input standard al comando. Non è possibile dividere una riga di comando in più righe.

Trucchi di pianificazione su Crontab

La formattazione può richiedere un po 'di tempo per abituarsi, ma qui ci sono alcuni trucchi per aiutarti. Se vuoi eseguire un cronjob ogni dieci minuti, puoi scriverlo in questo modo:

0, 10, 20, 30, 40, 50 * * * * /bin/execute/this/script.sh

Oppure puoi scriverlo in questo modo, il che è più semplice:

* / 10 * * * * /bin/execute/this/script.sh

Hai anche parole speciali che puoi aggiungere per il campo del primo minuto anziché un numero, in questo modo:

  • @reboot: questo eseguirà lo script una volta all'avvio del sistema
  • @yearly: per eseguire il comando una volta all'anno (il formato alternativo sarebbe “0 0 1 1 *”)
  • @annualmente: un'alternativa alla parola chiave annuale
  • @monthly: per eseguire il comando una volta al mese (“0 0 1 * *”)
  • @settimanale: da eseguire una volta alla settimana (“0 0 * * 0”)
  • @daily: da eseguire una volta alla settimana (“0 0 * * *”)
  • @midnight: un'alternativa alla parola chiave giornaliera
  • @hourly: per eseguire ogni ora (“0 * * * *”)

Memoria di output

Per impostazione predefinita, cron salva l'output del lavoro nella mailbox o root dell'utente. Ma puoi rendere l'output più semplice e più presentabile salvandolo in un file di registro separato. Ecco come lo fai:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux è in grado di riferire su vari livelli. Sono presenti errori standard STDERR e output standard STDOUT, contrassegnati rispettivamente come 2 e 1. La seguente istruzione indica di archiviare entrambi STDERR e STDOUT, per creare un singolo flusso di dati di messaggi ed errori:

2> & 1

Quindi abbiamo definito il flusso di output, ora dobbiamo assegnargli una destinazione. '>' Sovrascrive il file e '>>' lo aggiunge. Per aggiungere, che è sempre più sicuro, puoi usare il seguente comando:

>> /var/log/script_output.log

Conclusione

Come puoi vedere, cron ti consente di impostare le attività da eseguire automaticamente a intervalli regolari in background. Ciò consente la creazione automatica di backup, la pianificazione degli aggiornamenti, la sincronizzazione dei file e molto altro. Puoi fare tutto questo e molto altro con crontab.

Articoli consigliati: -

Ecco alcuni articoli che ti aiuteranno a ottenere maggiori dettagli su Linux Crontab, quindi basta passare attraverso il link.

  1. Domande e risposte sull'intervista di Linux | Utile e più richiesto
  2. Carriere in Linux
  3. Le 10 migliori app Linux utili per gli amministratori di sistema
  4. Linux vs Windows 10

Categoria: