Cron

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. september 2016; checks kræver 28 redigeringer .

cron  er en klassisk dæmon ( computerprogram  på  UNIX  -klassesystemer  ), der bruges til at køre job periodisk på et bestemt tidspunkt. Regelmæssige handlinger er beskrevet af instruktioner placeret i crontab- filer og specielle mapper.

Navnet cron er afledt af det græske ord χρόνος (hrόnos) - tid (på engelsk - chronos ). Udvikleren af ​​cron , Ken Thompson , bekræftede dette i en privat samtale med Brian Kernighan .   .

På systemd- baserede systemer er cron faktisk blevet erstattet af den indbyggede systemd.timer-mekanisme.

Crontab- filer oprettet til individuelle brugere er placeret i mappen [1] /usr/spool/cron/crontabs/ eller /var/spool/cron/tabs/ . Det anbefales ikke at redigere dem manuelt; til dette bruges kommandoen crontab -e. Crontab - filerne, der bruges til at styre hele systemet, er placeret i mappen /etc/cron.d/ . Derudover indeholder mapperne /etc/cron.daily/ , /etc/cron.weekly/ og /etc/cron.monthly/ programmer, der kører automatisk (dagligt, ugentligt eller månedligt).

Hoved-cron-konfigurationsfilen, /etc/crontab, ser nogenlunde sådan ud:

# /etc/crontab: systemdækkende crontab # I modsætning til enhver anden crontab behøver du ikke at køre `crontab' #-kommandoen for at installere den nye version, når du redigerer denne fil # og filer i /etc/cron.d. Disse filer har også brugernavnsfelter, # som ingen af ​​de andre crontabs gør. SHELL = /bin/sh PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow brugerkommando 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #

crontab

Hver bruger af systemet har sin egen fil indstillet af crontab , som beskriver på hvilket tidspunkt og hvilke programmer der skal køres på vegne af denne bruger. For at redigere crontab -filen bruges et specielt crontab -program af samme navn , som giver dig mulighed for ikke at afbryde cron- processen, mens du redigerer.

Vis indholdet af den aktuelle tidsplanfil:

crontab -l

Sletning af den aktuelle tidsplanfil:

crontab -r

For at redigere din brugers crontab -fil, brug kommandoen [2]

crontab -e

Crontab- tabellen består af 6 kolonner adskilt af mellemrum eller tabulatorer . De første fem kolonner angiver udførelsestidspunktet ( minut , time , dag , måned , ugedag ), de kan indeholde et tal, en liste over tal adskilt af kommaer, et område af tal adskilt af en bindestreg, symboler *eller /. I system- crontab - filer , efter tidsfelterne, angives den bruger, som kommandoen køres fra. Alle andre tegn i strengen fortolkes som en eksekverbar kommando med dens parametre. Hvis kommandoen sender noget tekst til standardoutput, sendes denne tekst til brugerens e-mail .

* * * * * kommando til at udføre - - - - - | | | | | | | | | ----- ugedag (0-7) (søndag = 0 eller 7) | | | ------- måned (1-12) | | ---------- dag i måneden (1-31) | ---------- time (0-23) ------------- minut (0-59)

Et eksempel på crontab fil :

# kommentarer begynder med '#' som sædvanligt # brug /bin/sh som en shell SHELL = /bin/sh # send resultater til denne adresse MAILTO = paul@example.org # tilføj brugerens hjemmemappe til PATH PATH = /bin:/ usr/bin:/home/paul/bin #### Jobs starter her # udfør hver dag ved 0 timer 5 minutter, tilføj resultatet til log/dagligt 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # udfør den 1. i hver måned kl. 14:15 15 14 1 * * $HOME /bin/monthly # hver hverdag kl. 22:00 0 22 *​* 1 -5 ekko "Tid til at gå hjem" | mail -s "Klokken er allerede 22:00" john 23 */2 * * * ekko "Kører på 0:23, 2:23, 4:23 osv." 5 4 * * sol ekko "Kører kl. 4:05 om søndagen" 0 0 1 1 * ekko "Godt nytår!" 15 10 ,13 * * 1 ,4 ekko "Denne besked vises mandag og torsdag kl. 10:15 og 13:15" 0 -59 * * * * ekko "Kør hvert minut" 0 -59/2 * * * * echo " Kører på lige minutter" 1 -59/2 * * * * ekko "Kører på ulige minutter" # hvert 5. minut */5 * * * * ekko "Fem minutter er gået" # hver første søndag i hver måned. -eq 7 er ugedagskoden, dvs. 1 -> mandag , 2 -> tirsdag osv. 0 1 1 -7 * * [ " $( dato '+\%u' ) " -eq 7 ] && echo " Denne etiket vises hver første søndag i hver måned kl. 1:00"

Funktioner

  • Alle betingelser (starttidspunkt) kontrolleres af "logisk OG", bortset fra betingelserne "ugedag" og "dag i måneden" - angivet sammen behandles de af "logisk ELLER", det vil sige "på evt. of the days", hvilket afspejles i dokumentationen (Ubuntu, Debian, FreeBSD). Denne logik er dog ikke indlysende og tillader dig ikke at oprette en tilstand som "den første mandag i hver måned" eller "hver fredag ​​den 13.". Udviklere ændrer ikke denne adfærd, idet de betragter det som en standard. [3]
  • Alle crontab - filer skal slutte med en tom linje, ellers vil den sidste regel eller hele filen blive ignoreret.
  • Kommandoerne i crontab -filen bruger standard shell-syntaks, men de kan ikke opdeles over flere linjer.
  • Eksekverbare filer i automatisk scannede mapper såsom /etc/cron.daily/ ignoreres, hvis deres navn indeholder en prik.
  • Crontab- syntaksen , der bruges til at køre hvert par minutter med en offset, kan føre til uventede resultater. Så optagelsen 1-56/5 * * * *udløses ikke det 1. minut af hver time; for at udløse "hvert 5. minut fra det 1. minut i timen" skal du bruge formatet 1-59/5 * * * *eller 1,6,11,16,21,26,31,36,41,46,51,56 * * * *.
  • Et tegn %i run-kommandoen bruges til at sende en ny linje til kommandoen (hvis den ikke er escaped). Kommandoteksten efter den sendes til programmet, der køres, ikke som kommandolinjeparametre, men via standardinput .
  • Outputtet af lancerede kommandoer sendes til den bruger, på hvis vegne lanceringen blev udført. Hvis direktivet er placeret i crontab -filen før kommandoen MAILTO=<new@email>, vil outputdataene blive sendt til den angivne adresse.

Grafisk brugergrænseflade

Af hensyn til brugernes bekvemmelighed har mange systemer specielle GUI- programmer til styring af cron .

Gnome-skema

For Debian-baserede distributioner:

  • Installation:sudo apt-get install gnome-schedule
  • Kør: Programmer → Systemværktøjer → Tidsplan [1]

kcron

Kcron er en KDE -grænseflade til redigering af cron -konfigurationsfiler . Værktøjet startes af Alt+F2 , i redigeringsvinduet kan du angive med musen:

  • fuld sti til programmets eksekverbare fil
  • det rigtige tidspunkt at starte programmet på
  • miljøvariabler, der er nødvendige under programafvikling

Lignende programmer

  • NnCron  er en skemalægger til Windows .
  • Task Scheduler  - Windows Task Scheduler og dets konsolværktøjschtasks.exe.
  • at  - køre programmer én gang ad gangen.
  • anacron  - periodisk lancering af programmer, ikke nødvendigvis nøjagtigt på det angivne tidspunkt: for eksempel, hvis maskinen blev slukket på det tidspunkt, der er angivet i opgaven,anacronvil den udføre opgaven senere.
  • inetd  - kør serviceprogrammer for netværksanmodninger.
  • opstart  - start begivenhedsserviceprogrammer (en generalisering af cron, atd, anacron, inetd ).

Noter

  1. Man cron Arkiveret 28. maj 2007 på Wayback Machine .
  2. Cron Howto Arkiveret 15. maj 2011 på Wayback Machine .
  3. Debian Issue Tracker-diskussion Arkiveret 11. april 2018 på Wayback Machine .

Links