Crontab - Hvis du har et servertungt nettsted for tiden, kan det være lurt å kjøre visse prosesser som å berike data eller generere miniatyrbilder i bakgrunnen, uten å forstyrre brukergrensesnittet. Linux crontab har et godt program som gjør akkurat det: Cron.

En introduksjon til Cron

Så hva er dette programmet? Cron er kategorisert som en demon som kan utføre planlagte kommandoer. Det startes automatisk når du går inn i flere brukerkjøringsnivåer, fra /etc/init.d. Den søker på spoolområdet på / var / spool / cron / crontabs etter crontab-filer oppkalt etter kontoene i / etc / passwd. For å få tilgang til crontabs i denne katalogen, må du bruke crontab-kommandoen i stedet for å få direkte tilgang til dem. Cron kan også lese det litt forskjellige formatet til / etc / crontab, samt filer i /etc/cron.d.

Når den er konfigurert, våkner Cron hvert minutt, undersøker lagrede linux crontabs og sjekker kommandoen for å se om det er noe som skal utføres. Hvis en kommando blir utført og output blir generert, sendes den deretter til crontabs eier eller bruker i MAILTO-variabelen i crontab. Barna kopiene av cron som kjører disse prosessene er navngitt med store bokstaver, som du vil se i ps og syslog output.

Cron sjekker også hvert minutt for endringer i modtime av spoolkatalogen. Hvis det er endringer, undersøker den modtime for alle linux crontabs og laster inn de som har endret seg. Som et resultat trenger cron ikke å starte på nytt når en crontab-fil endres.

Når klokken endres med tre timer eller mindre, eksisterer spesielle hensyn som ved begynnelsen og slutten av sommertiden. Hvis tiden går fremover, vil jobbene som skal kjøres i hoppetiden bli endret slik at de kjøres rett etter endringen. I den andre enden, hvis tiden beveger seg bakover, vil ikke jobbene som faller i den gjentatte tiden bli kjørt på nytt.

Bare jobber som kjøres på et bestemt tidspunkt i stedet for timejobber eller de som er merket med '*' i minutt / time-spesifiseringen, blir berørt. Jobber spesifisert med ville biler kjøres umiddelbart basert på den nye tiden. Ved klokkeendringer på mer enn tre timer blir den nye tiden øyeblikkelig brukt.

I Red hat og Debian behandler cron cron.d-filene som utvidelser til linux crontab-filen siden de følger det spesielle formatet til filen, noe som betyr at de inkluderer brukerfeltet. Denne funksjonen tar sikte på å tillate pakker som krever finere planleggingskontroll enn daglige, månedlige eller ukentlige kataloger. Slike filer bør ideelt oppkalt etter deres leverandørpakker. Filer må være i samsvar med navnekonvensjonen som brukes for kjøredeler, ved at de utelukkende må bestå av store og små bokstaver, sifre, bindestrek og understrek. Filene i cron.d-katalogen overvåkes for endringer, akkurat som linux crontab-katalogen. For kommandoer som / bin / ls, må du sørge for å bruke absolutte banenavn for å ringe riktig kommando.

En introduksjon til Linux Crontab

Nå som du kjenner til og fra outsider i cron, la oss se nøye på linux crontab, som er et program for å installere, avinstallere eller liste opp tabellene for å drive selve demonen. Hver bruker kan ha en egen Linux-crontab, og filene er tilgjengelige i crontabs-katalogen, men ikke ment for direkte redigering.

Enhver kommando gitt i en linux crontab av en bruker vil bli utført som brukeren som eier den. Faner, ledende mellomrom og blanke linjer blir vanligvis ignorert. Linjer som har et hasjetegn som det første tegnet som ikke er mellomrom, blir ignorert når de blir behandlet som kommentarer. Det er verdt å merke seg at kommentarer ikke er tillatt innenfor de samme linjene med cron-kommandoer som de vil bli lest som en del av kommandoen. På en lignende merknad er kommentarer heller ikke tillatt på linjer med innstillinger for miljøvariabler.

I en linux crontab, en aktiv linje med en cron-kommando eller miljøvariabel innstilling, som er i formen "navn = verdi", der det kan legges mellomrom om nødvendig rundt lik-til-tegnet. Eventuelle påfølgende ikke-ledende mellomrom er en del av navnverdien. Verdistrengen kan plasseres i enkle eller doble samsvarende sitater for å bevare etterfølgende eller føre blanke mellomrom. Det er ikke analysert for miljøsubstitusjoner, så du kan finne at linjer som “PATH = $ HOME / bin: $ PATH” ikke vil fungere som forventet.

Mange miljøinnstillinger blir automatisk satt opp av cron, som HOME og LOGNAME blir satt fra passwd-linjen til brukeren og SHELL blir satt til / bin / sh og PATH blir satt til / usr / bin: / bin. Du kan overstyre PATH, SHELL og HOME med crontab-innstillinger. LOGNAME kan imidlertid ikke endres, siden det er brukeren som jobben kjører fra. På BSD-systemer kan denne variabelen kalles USER, i hvilket tilfelle USER også vil bli satt.

Hvis sending av e-post er en del av kommandoene som kjøres i linux crontab, vil cron også se på MAILTO. Hvis variabelen er definert og ikke-tom, sendes en e-post til den valgte brukeren. Men hvis den er tom, sendes ingen e-post, og en e-post sendes i stedet til linux crontab-eieren. Hvis filen cron.allow er tilgjengelig, må du være oppført i den for å bruke denne kommandoen. Hvis denne filen ikke eksisterer, men en cron.deny-fil eksisterer, bør du fjerne den fra denne filen for å bruke kommandoen. Hvis ingen av filene eksisterer, er det bare superbrukeren som kan bruke kommandoen avhengig av nettstedavhengige parametere. Alternativt vil alle brukere kunne bruke kommandoen, som er tilfelle for standard Debian-systemer.

Hvis alternativet –u er tilgjengelig, gir det brukernavnet hvis linux crontab krever justering. Hvis ikke gitt, undersøker crontab crontab til brukeren som utfører kommandoen. Det er viktig å bruke dette alternativet alltid for sikkerhets skyld når du kjører inne i su, siden linux crontab kan forveksles av su. Alternativet -l er tilgjengelig for gjeldende crontab som skal vises på standardutgangen, mens alternativet -r fjerner gjeldende crontab. Kommandoen -e brukes til å redigere gjeldende linux crontab ved å bruke redaktører spesifisert av EDITOR eller VISUAL miljøvariabler. Du kan ikke bruke noen redigerer som fjerner koblingen og gjenskaper filen. du trenger en redaktør som redigerer filen på plass. Etter å ha forlatt redaktøren, installeres den tilpassede linux crontab automatisk.

Modulen pam_env støttes også av cron på Debian GNU / Linux-systemet, og laster inn miljøet som spesifisert i modulfilen. Det skal imidlertid bemerkes at PAM-innstillingen ikke overstyrer de ovennevnte innstillingene eller crontab-filinnstillingene. Hvis du vil at en PATH er annerledes enn plassering av søpla, må du sette den opp i crontab-filen. Cron vil som standard sende e-poster ved hjelp av innholdstypen 'tekst / vanlig' med karaktersettparameteren satt til kodesettet / tegnkartet til landskapet der cron har startet opp, som er standard systemområde uten noen miljøvariabel satt, eller det sted som variablene setter opp. Du kan legge til dine egne karakterkoder for e-postutdataene ved å stille inn variablene Content_Transfer_Encoding og Content_Type i crontabs for å matche postens overskrifter.

Anbefalte kurs

  • Online R Studio Anova Techniques Course
  • Sertifiseringstrening i AngularJS
  • ISTQB nivå 1 sertifiseringskurs
  • Sertifiseringstrening i grunnleggende tester av programvaretesting

Jobber med Crontab

Kommandoen crontab, som finnes i Unix-lignende og Unix-operativsystemer, kan nås via en terminal. For å se hva crontab kjører for øyeblikket, åpner du en terminal på systemet ditt og kjører følgende kommando:

$ sudo crontab -l

For å redigere crontab-jobblistene, kan du bruke følgende kommando:

$ sudo crontab -e

Denne kommandoen åpner standardredigereren i systemet ditt, som kan være pico eller vio, for å endre crontab. Hvis du vil lagre crontab-jobben på crontab-filen, lagrer du og avslutter redigereren. Crontab jobber eller cronjobs kan skrives slik:

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

Det er fem stjerner i kommandoen ovenfor, og hver av dem representerer forskjellige datodeler for å planlegge jobben. Her er de:

  1. Minutt, fra null til 59
  2. Time, fra null til 23
  3. Månedens dag, fra en til 31
  4. Måned, fra en til 12
  5. Ukedag, fra null til seks, med null som betyr søndag

Listen over er gitt i rekkefølge, så du må definere minuttet først, etterfulgt av time, dag i måneden, måned og ukedag. Du kan beholde stjerne hvis du ikke vil definere noen av feltene, men det er viktig å merke seg at symbolet betyr "alle". Hvis du lar alle fem felt være ubegrenset med stjernene intakt, betyr det hvert minutt av hver time, hver dag i hver uke og hver måned.

La oss anta at du bare vil utføre et manus hver middag på en søndag. Dette er hva du gjør:

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

Nå blir skriptet kjørt når systemklokken treffer 1200 timer hver søndag, hver uke i hver måned. Nå, hvis du vil utføre skriptet hver arbeidsdag klokka 12, er det du skriver:

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

Cron utfører kommandoer når felt for år, måned, time og minutt samsvarer med gjeldende tid, eller når minst dagen i måneden og året samsvarer med gjeldende tid. Et felt kan være merket med en stjerne for å betegne 'først-sist'. Tallområder er tillatt, med områdene to numre som er atskilt med bindestrek. Det spesifikke området er inkluderende, så et område på 8-11 for 'timer' spesifiserer utførelse på den åttende, niende, tiende og ellevte timen. Lister støttes også, med hvert nummer atskilt med komma, for eksempel '1, 2, 8, 9'. Du kan mikse og matche også, så det kan være '1, 2, 8-11'.

Du kan bruke trinnverdier i forbindelse med områdene, med '/' etter et område som spesifiserer et hopp over verdien til tallet gjennom området. For eksempel spesifiserer '0-11 / 2' i timefeltet kommandoutførelse annenhver time, som vil bli skrevet som en liste slik: '0, 2, 4, 6, 8, 10'. Trinn kan tillates etter en stjerne, som '* / 2' for å indikere en kommando som skal utføres annenhver time. For dag- og månedsfeltene kan du bruke de tre første bokstavene i den aktuelle dagen eller måneden, og saken betyr ikke noe. Lister og utvalg av navn støttes imidlertid ikke. Utførelsesdagen kan spesifiseres i to felt: ukedag og månedsdag. Hvis begge felt er begrenset, kjører kommandoen når begge feltene samsvarer.

Resten av linjen er det "sjette" feltet, som spesifiserer kommandoen som skal kjøres. Kommandodelen av linjen tar opp til en ny linje eller opp til% karakter. Det utføres av sh eller av det spesifiserte skallet i crontab-filens SHELL-variabel. % I kommandoen vil bli endret til nye linjetegn med mindre de slipper unna med motsnittet '\'. Alle dataene etter det første% -tegnet sendes som standardinngang til kommandoen. Du kan ikke dele en kommandolinje i flere linjer.

Planlegge triks på Crontab

Formateringen kan ta litt å bli vant til, men her er noen triks for å hjelpe deg. Hvis du vil løpe en cronjob hvert tiende minutt, kan du enten skrive det på denne måten:

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

Eller du kan skrive det på denne måten, som er enklere:

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

Du har også spesielle ord som du kan legge til i første minutt-feltet i stedet for et tall, slik:

  • @reboot: dette vil kjøre skriptet en gang ved oppstart av systemet
  • @år: å kjøre kommandoen en gang i året (det alternative formatet vil være "0 0 1 1 *")
  • @ annually: et alternativ til det årlige nøkkelordet
  • @ månedlig: for å kjøre kommandoen en gang i måneden (“0 0 1 * *”)
  • @ ukentlig: å løpe en gang i uken (“0 0 * * 0”)
  • @daily: å løpe en gang i uken (“0 0 * * *”)
  • @ midnatt: et alternativ til det daglige nøkkelordet
  • @hourly: å løpe hver time (“0 * * * *”)

Utgangslagring

Som standard lagrer cron utdataene fra jobben til brukerpostkassen eller roten. Men du kan gjøre utdata enklere og mer presentabel ved å lagre den i en egen loggfil. Slik gjør du:

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

Linux kan rapportere på forskjellige nivåer. Du har standardfeil STDERR og standardutgang STDOUT, merket som henholdsvis 2 og 1. Følgende uttalelse forteller om å lagre STDERR og STDOUT begge, for å opprette en enkelt datastrøm med meldinger og feil:

2> & 1

Så vi har definert utgangsstrømmen, og nå må vi gi den en destinasjon. '>' Overskriver filen, og '>>' legges til. For vedlegg, som alltid er tryggere, kan du bruke følgende kommando:

>> /var/log/script_output.log

Konklusjon

Som du ser, lar cron deg stille inn oppgaver som skal kjøres automatisk med jevne mellomrom i bakgrunnen. Dette muliggjør automatisk oppretting av sikkerhetskopier, planlegging av oppdateringer, synkronisering av filer og mye mer. Alt dette og mer kan du gjøre med crontab.

Anbefalte artikler: -

Her er noen artikler som vil hjelpe deg med å få mer detaljert informasjon om Linux Crontab, så bare gå gjennom lenken.

  1. Linux-intervju spørsmål og svar | Nyttig og mest spurt
  2. Karrierer i Linux
  3. Topp 10 nyttige Linux-apper for systemadministratorer
  4. Linux vs Windows 10