Android

Planlegge cron-jobber med crontab

Linux - Cron Jobs for Scheduled Tasks (crontab)

Linux - Cron Jobs for Scheduled Tasks (crontab)

Innholdsfortegnelse:

Anonim

Cron er en planleggingsdemon som utfører oppgaver med angitte intervaller. Disse oppgavene kalles cron-jobber og brukes stort sett for å automatisere systemvedlikehold eller administrasjon.

For eksempel kan du angi en cron-jobb for å automatisere repeterende oppgaver som å ta sikkerhetskopi av databaser eller data, oppdatere systemet med de siste sikkerhetsoppdateringene, sjekke bruken av diskplass, sende e-post og så videre. Noen applikasjoner, for eksempel Drupal eller Magento, krever cron-jobber for å utføre visse oppgaver.

Cron-jobbene kan planlegges å kjøre av et minutt, time, dag i måneden, måneden, ukens dag eller en hvilken som helst kombinasjon av disse.

Hva er Crontab-fil

Crontab (cron tabell) er en tekstfil som spesifiserer tidsplanen for cron jobber. Det er to typer crontab-filer. Systemdekkende crontab-filer og individuelle bruker crontab-filer.

Brukernes crontab-filer lagres med brukerens navn, og deres plassering varierer fra operativsystemer. I Red Hat-baserte system som CentOS lagres crontab-filer i /var/spool/cron katalogen mens de er på Debian og Ubuntu-filer lagres i /var/spool/cron/crontabs katalogen.

Selv om du kan redigere brukerens crontab-filer manuelt, anbefales det å bruke crontab kommandoen.

/etc/crontab og filene i katalogen /etc/cron.d er hele systemet Crontab-filer som bare kan redigeres av systemadministratorene.

I de fleste Linux-distribusjoner kan du også plassere skript i /etc/cron.{hourly, daily, weekly, monthly} -katalogene, og skriptene blir utført hver hour/day/week/month .

Crontab syntaks og operatører

Hver linje i crontab-filen til brukeren inneholder seks felt atskilt med et mellomrom etterfulgt av kommandoen som skal kjø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 fem første feltene kan inneholde en eller flere verdier, atskilt med komma eller et område med verdier atskilt med bindestrek.

  • * -Stjerneoperatøren betyr enhver verdi eller alltid. Hvis du har stjerne-symbolet i feltet Hour, betyr det at oppgaven blir utført hver time. , -Kommeaktøren lar deg spesifisere en liste over verdier for repetisjon. For eksempel, hvis du har 1, 3, 5 i timefeltet, vil oppgaven kjøres fra 1 am, 3 am og 5 am. - -Bindestrek-operatøren lar deg angi et verdiområde. Hvis du har 1-5 i feltet Day of week, vil oppgaven kjøres hver ukedag (fra mandag til fredag). / -Snoroperatøren lar deg spesifisere verdier som skal gjentas over et visst intervall mellom dem. Hvis du for eksempel har */4 i feltet Hour, betyr det at handlingen blir utført hver fjerde time. Det er det samme som å spesifisere 0, 4, 8, 12, 16, 20 . I stedet for stjerne før skråstrek-operatøren, kan du også bruke et utvalg av verdier, 1-30/10 betyr det samme som 1, 11, 21 .

Systemomfattende Crontab-filer

Syntaksen til systemdekkende crontab-filer er litt annerledes enn brukerens crontabs. Den inneholder et ekstra obligatorisk brukerfelt som spesifiserer hvilken bruker som skal kjøre cron-jobben.

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

Forhåndsdefinerte makroer

Det er flere spesielle Cron-planmakroer som brukes til å spesifisere vanlige intervaller. Du kan bruke disse snarveiene i stedet for dataspesifikasjonen med fem kolonner.

  • @yearly (eller @annually ) - Kjør den oppgitte oppgaven en gang i året ved midnatt (kl. 12.00) 1. januar. Tilsvarer 0 0 1 1 * . @monthly - Kjør den oppgitte oppgaven en gang i måneden ved midnatt den første dagen i måneden. Tilsvarer 0 0 1 * * . @weekly - Kjør den oppgitte oppgaven en gang i uken ved midnatt på søndag. Tilsvarer 0 0 * * 0 . @daily - Kjør den oppgitte oppgaven en gang om dagen ved midnatt. Tilsvarer 0 0 * * * . @hourly - Kjør den oppgitte oppgaven en gang i timen på begynnelsen av timen. Tilsvarer 0 * * * * . @reboot - Kjør den oppgitte oppgaven ved systemoppstart (starttid).

Linux Crontab-kommando

Kommandoen crontab lar deg installere eller åpne en crontab-fil for redigering.

Du kan bruke crontab-kommandoen til å vise, legge til, fjerne eller endre cron-jobber ved å bruke følgende alternativer:

  • crontab -e - Rediger crontab-fil, eller opprett en hvis den ikke allerede eksisterer. crontab -l - Vis innholdet i crontab-filen. crontab -r - Fjern den nåværende crontab-filen. crontab -i - Fjern den gjeldende crontab-filen med en ledetekst før du fjerner den. crontab -u - Rediger crontab-fil for annen bruk. Krever systemadministratorrettigheter.

Crontab-kommandoen åpner crontab-filen ved å bruke redigeringsprogrammet som er spesifisert av miljøvariablene VISUAL eller EDITOR .

Crontab-variabler

Cron-demonet setter automatisk flere miljøvariabler.

  • Standard banen er satt til PATH=/usr/bin:/bin . Hvis kommandoen du ringer er til stede i den cron-spesifiserte banen, kan du enten bruke den absolutte banen til kommandoen eller endre cron $PATH variabelen. Du kan ikke implisitt legge til :$PATH som du gjør med et vanlig skript. Standardskallet er satt til /bin/sh . Du kan angi et annet skall ved å endre SHELL variabelen. Kron påberoper kommandoen fra brukerens hjemmekatalog. HOME variabelen kan overstyres av innstillinger i crontab. E-postvarslingen sendes til eieren av crontab. For å overskrive standardoppførselen, kan du bruke MAILTO med en liste (komma separert) med alle e-postadressene du vil motta e-postvarslene. Hvis MAILTO er definert men tom ( MAILTO="" ), sendes ingen e-post.

Crontab-begrensninger

Systemadministratorer kan kontrollere hvilke brukere som har tilgang til crontab kommandoen ved å bruke filene /etc/cron.deny og /etc/cron.allow . Filene består av en liste med brukernavn, ett brukernavn per linje.

Som standard eksisterer bare filen /etc/cron.deny og er tom, noe som betyr at alle brukere kan bruke crontab-kommandoen. Hvis du vil nekte tilgang til crontab-kommandoene til en spesifikk bruker, legger du til brukernavnet til denne filen.

Hvis filen /etc/cron.allow eksisterer, kan bare brukerne som er oppført i denne filen bruke crontab kommandoen.

Hvis ingen av filene finnes, kan bare brukerne med administrative rettigheter bruke crontab kommandoen.

Cron Jobs Eksempler

Nedenfor er noen eksempler på cron-jobber som viser deg hvordan du planlegger en oppgave å kjøre på forskjellige tidsperioder.

  • Kjør en kommando kl 15:00 på hver dag fra mandag til fredag:

    0 15 * * 1-5 command

    Kjør et skript hvert 5. minutt og omdirigerte standardutgangen til dev null , bare standardfeilen blir sendt til den angitte e-postadressen:

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

    Kjør to kommandoer hver mandag klokka 15.00 (bruk operatøren && mellom kommandoene):

    0 15 * * Mon command1 && command2

    Kjør et PHP-skript hvert 2. minutt og skriv utdataene til en fil:

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

    Kjør et manus hver dag, hver time, på timen, fra 08.00 til 16.00:

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

    Kjør et manus den første mandagen i hver måned, klokka 07.00

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

    Kjør et manus klokka 21:15, den 1. og 15. hver måned:

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

    Angi tilpassede HOME , PATH , SHELL og MAILTO variabler og kjør en kommando hvert minutt.

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

Konklusjon

Du har lært hvordan du kan lage cron-jobber og planlegge oppgaver til en bestemt dato og tid.

Legg gjerne igjen en kommentar hvis du har spørsmål.

cron crontab terminal