Android

Planlægning af cron-job med crontab

Planlægning af Malawi akvarie på 720 liter

Planlægning af Malawi akvarie på 720 liter

Indholdsfortegnelse:

Anonim

Cron er en planlægningsdæmon, der udfører opgaver med specificerede intervaller. Disse opgaver kaldes cron-job og bruges mest til at automatisere systemvedligeholdelse eller -administration.

For eksempel kan du indstille et cron-job til at automatisere gentagne opgaver såsom sikkerhedskopiering af databaser eller data, opdatering af systemet med de nyeste sikkerhedsrettelser, kontrol af brugen af ​​diskplads, afsendelse af e-mails og så videre. Nogle applikationer, såsom Drupal eller Magento, kræver cron-job for at udføre visse opgaver.

Cron-job kan planlægges kørt med et minut, time, dag i måneden, måned, ugedag eller en hvilken som helst kombination af disse.

Hvad er Crontab-fil

Crontab (cron-tabel) er en tekstfil, der specificerer tidsplanen for cron-job. Der er to typer crontab-filer. System-dækkende crontab-filer og individuelle bruger-crontab-filer.

Brugere crontab-filer gemmes under brugerens navn, og deres placering varierer fra operativsystemer. I Red Hat-baserede system, såsom CentOS, gemmes crontab-filer i /var/spool/cron biblioteket, mens de på Debian og Ubuntu-filer er gemt i /var/spool/cron/crontabs biblioteket.

Selvom du kan redigere brugerens crontab-filer manuelt, anbefales det at bruge crontab kommandoen.

/etc/crontab og filerne i biblioteket /etc/cron.d er systemdækkende crontab-filer, der kun kan redigeres af systemadministratorerne.

I de fleste Linux-distributioner kan du også placere scripts i /etc/cron.{hourly, daily, weekly, monthly} hour/day/week/month /etc/cron.{hourly, daily, weekly, monthly} -katalogerne, og scripterne udføres hver hour/day/week/month .

Crontab syntaks og operatører

Hver linje i brugerens crontab-fil indeholder seks felter adskilt af et mellemrum efterfulgt af den kommando, der skal køres.

* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)

De første fem felter kan indeholde en eller flere værdier, adskilt af et komma eller et interval af værdier, der er adskilt af en bindestreg.

  • * -Stjerneoperatøren betyder enhver værdi eller altid. Hvis du har stjerne-symbolet i feltet Hour, betyder det, at opgaven udføres hver time. , -Kommunikatoren giver dig mulighed for at specificere en liste over værdier til gentagelse. For eksempel, hvis du har 1, 3, 5 i feltet Timer, kører opgaven kl. 01.00, 05.00 og 05.00. - -Bindestreg-operatøren giver dig mulighed for at specificere et interval af værdier. Hvis du har 1-5 i feltet Ugedag, kører opgaven hver ugedag (Fra mandag til fredag). / -Slash-operatøren giver dig mulighed for at specificere værdier, der gentages over et vist interval mellem dem. For eksempel, hvis du har */4 i feltet Hour, betyder det, at handlingen udføres hver fjerde time. Det er det samme som at specificere 0, 4, 8, 12, 16, 20 . I stedet for stjerne foran skråstregsoperatoren, kan du også bruge et interval af værdier, 1-30/10 betyder det samme som 1, 11, 21 .

System-dækkende Crontab-filer

Syntaks for systemdækkende crontab-filer er lidt anderledes end bruger crontabs. Det indeholder et yderligere obligatorisk brugerfelt, der specificerer, hvilken bruger der skal køre cron-jobbet.

* * * * * command(s) * * * * * command(s)

Foruddefinerede makroer

Der er flere specielle Cron-skema-makroer, der bruges til at specificere almindelige intervaller. Du kan bruge disse genveje i stedet for dato-specifikationen med fem kolonner.

  • @yearly (eller @annually ) - Kør den angivne opgave en gang om året ved midnat (kl. 12.00) den 1. januar. Tilsvarende 0 0 1 1 * . @monthly - Kør den angivne opgave en gang om måneden ved midnat den første dag i måneden. Tilsvarende 0 0 1 * * . @weekly - Kør den angivne opgave en gang om ugen ved midnat på søndag. Tilsvarende 0 0 * * 0 . @daily - Kør den angivne opgave en gang dagligt ved midnat. Tilsvarende 0 0 * * * . @hourly - Kør den angivne opgave en gang i timen i begyndelsen af ​​timen. Tilsvarende 0 * * * * . @reboot - Kør den specificerede opgave ved systemstart (starttid).

Linux Crontab-kommando

Kommandoen crontab giver dig mulighed for at installere eller åbne en crontab-fil til redigering.

Du kan bruge crontab-kommandoen til at se, tilføje, fjerne eller ændre cron-job ved hjælp af følgende indstillinger:

  • crontab -e - Rediger crontab-fil, eller opret en, hvis den ikke allerede findes. crontab -l - Vis indholdet i crontab-filen. crontab -r - Fjern din nuværende crontab-fil. crontab -i - Fjern din aktuelle crontab-fil med en prompt, før den fjernes. crontab -u - Rediger crontab-fil til anden brug. Kræver systemadministratorrettigheder.

Crontab-kommandoen åbner crontab-filen ved hjælp af den editor, der er angivet af miljøvariablerne VISUAL eller EDITOR .

Crontab-variabler

Cron-dæmonen indstiller automatisk flere miljøvariabler.

  • Standardstien er indstillet til PATH=/usr/bin:/bin . Hvis den kommando, du ringer til, findes i den cron-specificerede sti, kan du enten bruge den absolutte sti til kommandoen eller ændre variablen cron $PATH . Du kan ikke implicit tilføje :$PATH som du ville gøre med et almindeligt script. Standardskallen er indstillet til /bin/sh . Du kan indstille en anden skal ved at ændre SHELL variablen. Kron påkalder kommandoen fra brugerens hjemmekatalog. HOME variablen kan tilsidesættes af indstillinger i crontab. E-mail-meddelelsen sendes til ejeren af ​​crontab. For at overskrive standardadfærden kan du bruge MAILTO med en liste (komma adskilt) af alle de e-mail-adresser, du vil modtage e-mail-meddelelserne. Hvis MAILTO er defineret men tom ( MAILTO="" ), sendes der ingen e-mail.

Crontab-begrænsninger

Systemadministratorer kan kontrollere, hvilke brugere der har adgang til crontab kommandoen ved hjælp af filerne /etc/cron.deny og /etc/cron.allow . Filerne består af en liste med brugernavne, et brugernavn pr. Linje.

Som standard findes kun filen /etc/cron.deny og er tom, hvilket betyder, at alle brugere kan bruge kommandoen crontab. Hvis du vil nægte adgang til crontab-kommandoer til en bestemt bruger, skal du tilføje brugernavnet til denne fil.

Hvis filen /etc/cron.allow findes, er det kun de brugere, der er anført i denne fil, som kan bruge kommandoen crontab .

Hvis der ikke findes nogen fil, er det kun brugere med administratorrettigheder, der kan bruge crontab kommandoen.

Eksempler på Cron Jobs

Nedenfor er nogle eksempler på cron-job, som viser dig, hvordan du planlægger en opgave, der skal køres på forskellige tidsperioder.

  • Kør en kommando kl. 15.00 hver dag fra mandag til fredag:

    0 15 * * 1-5 command

    Kør et script hvert 5. minut og omdirigerede standardoutputet til dev null , kun standardfejlen sendes til den specificerede e-mail-adresse:

    [email protected] */5 * * * * /path/to/script.sh > /dev/null

    Kør to kommandoer hver mandag kl. 15.00 (brug operatøren && mellem kommandoerne):

    0 15 * * Mon command1 && command2

    Kør et PHP-script hvert 2. minut og skriv output til en fil:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log

    Kør et script hver dag, hver time, på timen, fra 08:00 til 16:00:

    00 08-16 * * * /path/to/script.sh

    Kør et script den første mandag i hver måned, kl. 7

    0 7 1-7 * 1 /path/to/script.sh

    Kør scriptet kl. 21:15 den 1. og 15. i hver måned:

    15 9 1, 15 * * /path/to/script.sh

    Indstil tilpassede HOME , PATH , SHELL og MAILTO variabler og kør en kommando hvert minut.

    HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command

Konklusion

Du har lært, hvordan du opretter cron-job og planlægge opgaver på en bestemt dato og tidspunkt.

Du er velkommen til at give en kommentar, hvis du har spørgsmål.

cron crontab terminal