Crontab - Hvis du på nuværende tidspunkt har et servertungt websted, ser du muligvis ud til at køre visse processer som berigelse af data eller generering af miniaturer i baggrunden uden at forstyrre brugergrænsefladen. Nå, Linux crontab har et godt program, der gør nøjagtigt det: Cron.

En introduktion til Cron

Så hvad er dette program? Cron er kategoriseret som en dæmon, der kan udføre planlagte kommandoer. Det startes automatisk, når du indtaster flerbrugerkørerniveauer fra /etc/init.d. Den søger spoolområdet ved / var / spool / cron / crontabs efter crontab-filer opkaldt efter konti i / etc / passwd. For at få adgang til crontabs i dette bibliotek skal du bruge kommandoen crontab i stedet for direkte adgang til dem. Cron kan også læse det lille forskellige format af / etc / crontab samt filer i /etc/cron.d.

Når den er konfigureret, vågner Cron op hvert minut, undersøger lagrede linux crontabs og kontrollerer kommandoen for at se, om der er noget, der skal udføres. Hvis en kommando udføres og output genereres, sendes output derefter til crontabs ejer eller bruger i MAILTO-variablen i crontab. Børnekopierne af cron, der kører disse processer, kaldes med store bogstaver, som du vil se i ps og syslog output.

Cron kontrollerer også hvert minut for ændringer i modtiden til spoolkataloget. Hvis der er ændringer, undersøger den modtime for alle linux crontabs og genindlæser dem, der er ændret. Som et resultat behøver cron ikke at genstarte, når en crontab-fil ændres.

Når uret ændres med tre timer eller mindre, findes der særlige overvejelser som ved starten og slutningen af ​​sommertid. Hvis tiden bevæger sig, ændres de job, der skal køres i den springede tid, til at køre kort efter ændringen. I den anden ende, hvis tiden bevæger sig bagud, vil de job, der falder i den gentagne tid, ikke blive kørt igen.

Kun job, der kører på et bestemt tidspunkt snarere end timearbejde eller de, der er markeret med '*' i minut / time-specificeren, påvirkes. Job, der er specificeret med vilde biler, køres straks baseret på den nye tid. I tilfælde af urændringer på mere end tre timer bruges den nye tid straks.

I Red hat og Debian behandler cron cron.d-filerne som udvidelser til linux crontab-filen, da de følger det specielle format af filen, hvilket betyder, at de inkluderer brugerfeltet. Denne funktion har til formål at tillade pakker, der kræver finere planlægningskontrol end daglige, månedlige eller ugentlige mapper. Sådanne filer skal ideelt navn opkaldes efter deres leverandørpakker. Filer skal være i overensstemmelse med navnekonventionen, der bruges til løbende dele, idet de udelukkende skal bestå af store og små bogstaver, cifre, bindestreger og understreg. Filerne i biblioteket cron.d overvåges for ændringer, ligesom linux crontab-biblioteket. For kommandoer som / bin / ls skal du sørge for at bruge absolutte stienavne til at ringe til den rigtige kommando.

En introduktion til Linux Crontab

Nu hvor du kender ind- og udgange af cron, lad os se nøje på linux crontab, som er et program til installation, afinstallation eller liste af tabellerne til at drive selve dæmonen. Hver bruger kan have en egen Linux-crontab, og filerne er tilgængelige i crontabs-biblioteket, men ikke beregnet til direkte redigering.

Enhver kommando, der gives i en Linux-crontab af en bruger, udføres som brugeren, der ejer den. Faner, førende mellemrum og blanke linjer ignoreres typisk. Linjer, der har et hash-tegn som det første tegn, der ikke er mellemrum, ignoreres, da de behandles som kommentarer. Det er værd at bemærke, at kommentarer ikke er tilladt inden for de samme linjer med cron-kommandoer, som de vil blive læst som en del af kommandoen. På en lignende note er kommentarer heller ikke tilladt på linjer med indstillinger for miljøvariabler.

I en linux crontab er en aktiv linje med en cron-kommando eller en miljøvariabelindstilling, der er i formen "navn = værdi", hvor der kan tilføjes mellemrum om nødvendigt omkring det samme-til-tegn. Eventuelle efterfølgende ikke-førende mellemrum er en del af navneværdien. Værdestrengen kunne placeres i enkelt eller dobbelt matchende tilbud for at bevare bageste eller føre blanke mellemrum. Det er ikke analyseret til miljøsubstitutioner, så du kan opleve, at linjer som “PATH = $ HOME / bin: $ PATH” ikke fungerer som forventet.

Mange miljøindstillinger indstilles automatisk af cron, ligesom HOME og LOGNAME indstilles fra passwd-linjen for brugeren og SHELL indstilles til / bin / sh og PATH indstilles til / usr / bin: / bin. Du kan tilsidesætte PATH, SHELL og HOME ved at indstille crontab. LOGNAME kan dog ikke ændres, da det er den bruger, som jobbet kører fra. På BSD-systemer kan denne variabel kaldes USER, i hvilket tilfælde USER også indstilles.

Hvis afsendelse af mails er en del af de kommandoer, der køres i linux crontab, vil cron også se på MAILTO. Hvis variablen er defineret og ikke-tom, sendes en mail til den navngivne bruger. Men hvis den er tom, sendes der ingen e-mail, og i stedet sendes en e-mail til linux crontab-ejeren. Hvis filen cron.allow er tilgængelig, skal du angives i den for at bruge denne kommando. Hvis denne fil ikke findes, men der findes en cron.deny-fil, skal du fjernes fra denne fil for at bruge kommandoen. Hvis ingen af ​​filerne findes, er det kun superbrugeren, der er i stand til at bruge kommandoen afhængigt af stedafhængige parametre. Alternativt kan alle brugere bruge kommandoen, hvilket er tilfældet for standard Debian-systemer.

Hvis indstillingen –u er tilgængelig, giver den det brugernavn, hvis linux crontab kræver finjustering. Hvis ikke givet, undersøger crontab crontab for den bruger, der udfører kommandoen. Det er vigtigt at bruge denne indstilling altid af hensyn til sikkerheden, når du kører inde i su, da linux crontab kan forveksles af su. Indstillingen -l er tilgængelig for den aktuelle crontab, der vises på standardoutput, mens indstillingen -r fjerner den aktuelle crontab. Kommandoen -e bruges til redigering af den aktuelle linux crontab ved hjælp af redaktører, der er specificeret af EDITOR eller VISUAL miljøvariabler. Du kan ikke bruge nogen editor, der fjerner linket til og gendanner filen; du har brug for en redaktør, der redigerer filen på plads. Når du har forladt editoren, installeres den justerede linux crontab automatisk.

Pam_env-modulet understøttes også af cron på Debian GNU / Linux-systemet, der indlæser miljøet som specificeret i modulfilen. Det skal dog bemærkes, at PAM-indstillingen ikke tilsidesætter de ovennævnte indstillinger eller crontab-filindstillingerne. Hvis du ønsker en PATH, der er forskellig fra placering af skraldespanden, skal du konfigurere den i crontab-filen. Cron vil som standard sende mails vha. Indholdstypen 'tekst / almindelig' med karaktersætparameteren indstillet til kodesættet / karakterkortet for det sted, hvor cron er startet, hvilket er standard systemindstillingerne uden nogen miljøvariabler indstillet, eller det sted, som variablerne opsætter. Du kan tilføje dine egne karakterkodninger til mailoutputet ved at indstille variablerne 'Content_Transfer_Encoding' og 'Content_Type' i crontabs for at matche mailoverskrifterne til navnene.

Anbefalede kurser

  • Online R Studio Anova Techniques-kursus
  • Certifikatuddannelse i AngularJS
  • ISTQB niveau 1 certificeringskursus
  • Certificeringstræning i grundlæggende software til test af software

Arbejder med Crontab

Kommandoen crontab, der findes i Unix-lignende og Unix-operativsystemer, kan fås via en terminal. For at se, hvilken crontab der kører i øjeblikket, skal du åbne en terminal på dit system og køre følgende kommando:

$ sudo crontab -l

Hvis du vil redigere crontab-joblister, kan du bruge følgende kommando:

$ sudo crontab -e

Denne kommando åbner standardeditoren i dit system, der kan være pico eller vio, for at ændre crontab. Hvis du vil gemme crontab-jobbet på din crontab-fil, skal du gemme og afslutte editoren. Crontab-job eller cronjobs kan skrives sådan:

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

Der er fem stjerner i ovennævnte kommando, hvor hver enkelt repræsenterer forskellige datodele for at planlægge jobbet. Her er de:

  1. Minut, der spænder fra nul til 59
  2. Time, der spænder fra nul til 23
  3. Månedens dag fra en til 31
  4. Måned fra en til 12
  5. Ugedag, der spænder fra nul til seks, med nul betyder søndag

Ovenstående liste er givet i rækkefølge, så du skal definere minuttet først efterfulgt af time, dag i måneden, måned og ugedag. Du kan beholde stjerne, hvis du ikke vil definere nogen af ​​felterne, men det er vigtigt at bemærke, at symbolet betyder 'alle'. Hvis du forlader alle fem felter uskiftede med stjernerne, betyder det hvert minut af hver time, hver dag i hver uge og hver måned.

Lad os nu antage, at du bare vil udføre et script hver middag på en søndag, her er hvad du gør:

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

Nu udføres scriptet, når systemuret rammer 1200 timer hver søndag, hver uge i hver måned. Nu, hvis du vil udføre scriptet hver arbejdsdag kl. 12, er det her, du skriver:

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

Cron udfører kommandoer, når felterne for år, måned, time og minut matcher den aktuelle tid, eller når mindst dagen i måneden og året matcher den aktuelle tid. Et felt kan være markeret med en stjerne for at betegne 'først-sidst'. Talintervaller er tilladt, med intervallerne to numre, der er adskilt af en bindestreg. Det specifikke interval er inkluderende, så et interval på 8-11 i 'timer' angiver udførelse på den ottende, niende, tiende og ellevte time. Lister understøttes også, med hvert nummer adskilt af kommaer, som '1, 2, 8, 9'. Du kan også mikse og matche, så det kunne være '1, 2, 8-11'.

Du kan bruge trinværdier i forbindelse med intervallerne med '/' efter et interval, der angiver et spring over værdien af ​​tallet gennem området. For eksempel specificerer '0-11 / 2' i timefeltet kommandoudførelse hver anden time, som ville blive skrevet som en liste på den måde: '0, 2, 4, 6, 8, 10'. Trin kan tillades efter en stjerne, som '* / 2' for at indikere en kommando, der skal udføres hver anden time. I felterne for dag og måned kan du bruge de første tre bogstaver i den pågældende dag eller måned, og sagen betyder ikke noget. Lister og intervaller med navne understøttes dog ikke. Udførelsesdagen kan specificeres i to felter: ugedag og månedsdag. Hvis begge felter er begrænset, kører kommandoen, når begge felter matcher.

Resten af ​​linjen er det 'sjette' felt, der specificerer den kommando, der skal køres. Kommandodelen af ​​linjen tager op til en ny linje eller op til% karakter. Det udføres af sh eller af den specificerede skal i crontab-filens SHELL-variabel. % I kommandoen ændres til nye linjetegn, medmindre de undslipper med tilbagegangsskærm '\'. Alle data efter det første% -tegn sendes som standardinput til kommandoen. Du kan ikke opdele en kommandolinie i flere linjer.

Planlægning af tricks på Crontab

Formateringen kan tage nogle at vænne sig til, men her er nogle tricks, der hjælper dig. Hvis du vil køre en cronjob hvert tiende minut, kan du enten skrive det på denne måde:

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

Eller du kan skrive det på denne måde, hvilket er lettere:

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

Du har også specielle ord, som du kan tilføje for det første minut-felt i stedet for et tal, sådan:

  • @reboot: dette vil køre scriptet én gang ved systemstart
  • @ årligt: ​​at køre kommandoen en gang om året (det alternative format ville være “0 0 1 1 *”)
  • @ hvert år: et alternativ til det årlige nøgleord
  • @ månedligt: ​​at køre kommandoen en gang om måneden (“0 0 1 * *”)
  • @ ugentligt: ​​at køre en gang om ugen (“0 0 * * 0”)
  • @ dagligt: ​​at køre en gang om ugen (“0 0 * * *”)
  • @ Midnat: et alternativ til det daglige nøgleord
  • @hourly: at køre hver time (“0 * * * *”)

Outputlagring

Som standard gemmer cron output af jobbet i brugerpostkassen eller roden. Men du kan gøre output enklere og mere præsenterbart ved at gemme det i en separat logfil. Sådan gør du det:

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

Linux er i stand til at rapportere på forskellige niveauer. Du har standardfejl STDERR og standardoutput STDOUT, markeret som henholdsvis 2 og 1. Følgende erklæring fortæller at gemme STDERR og STDOUT begge for at oprette en enkelt datastrøm med meddelelser og fejl:

2> & 1

Så vi har defineret outputstrømmen, og nu skal vi give den en destination. '>' Overskriver filen, og '>>' tilføjes den. Til tilføjelse, hvilket altid er mere sikkert, kan du bruge følgende kommando:

>> /var/log/script_output.log

Konklusion

Som du kan se, giver cron dig mulighed for at indstille opgaver til automatisk at køre med regelmæssige intervaller i baggrunden. Dette muliggør automatisk oprettelse af sikkerhedskopier, planlægning af opdateringer, synkronisering af filer og meget mere. Du kan gøre alt det og mere med crontab.

Anbefalede artikler: -

Her er nogle artikler, der hjælper dig med at få flere detaljer om Linux Crontab, så bare gå gennem linket.

  1. Linux Interview spørgsmål og svar | Nyttige og mest stillede
  2. Karrierer i Linux
  3. Top 10 nyttige Linux-apps til systemadministratorer
  4. Linux vs Windows 10

Kategori: