Cron

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14. syyskuuta 2016 tarkistetusta versiosta . tarkastukset vaativat 28 muokkausta .

cron  on klassinen demoni ( tietokoneohjelma UNIX  -   luokan  järjestelmissä ) , jota käytetään suorittamaan töitä säännöllisesti tiettyyn aikaan. Säännölliset toiminnot kuvataan crontab -tiedostoihin ja erikoishakemistoihin sijoitetuilla ohjeilla.

Nimi cron on johdettu kreikan sanasta χρόνος (hrόnos) - aika (englanniksi - chronos ). Cronin kehittäjä Ken Thompson vahvisti tämän yksityisessä keskustelussa Brian Kernighanin kanssa .  _  .

Systemd - pohjaisissa järjestelmissä cron on itse asiassa korvattu sisäänrakennetulla systemd.timer-mekanismilla.

Yksittäisille käyttäjille luodut Crontab - tiedostot sijaitsevat hakemistossa [1] /usr/spool/cron/crontabs/ tai /var/spool/cron/tabs/ . Ei ole suositeltavaa muokata niitä manuaalisesti, vaan tähän käytetään komentoa crontab -e. Koko järjestelmän hallintaan käytettävät crontab - tiedostot sijaitsevat /etc/cron.d/-hakemistossa . Lisäksi /etc/cron.daily/ , /etc/cron.weekly/ ja /etc/cron.monthly/ sisältävät ohjelmia, jotka suoritetaan automaattisesti (päivittäin, viikoittain tai kuukausittain).

Cronin pääasetustiedosto /etc/crontabnäyttää suunnilleen tältä:

# /etc/crontab: järjestelmänlaajuinen crontab # Toisin kuin mikään muu crontab, sinun ei tarvitse suorittaa `crontab' # -komentoa asentaaksesi uuden version, kun muokkaat tätä tiedostoa # ja tiedostoja /etc/cron.d. Näissä tiedostoissa on myös käyttäjätunnuskenttiä, # joita mikään muu crontab ei tee. SHELL = /bin/sh PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # mh dom mon dow käyttäjän komento 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * juuritesti -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 juuritesti -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * juuritesti -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) #

crontab

Jokaisella järjestelmän käyttäjällä on oma crontabin asettama tiedosto , joka kuvaa milloin ja mitä ohjelmia tulee suorittaa tämän käyttäjän puolesta. Crontab -tiedoston muokkaamiseen käytetään erityistä samannimistä crontab -ohjelmaa , jonka avulla et keskeytä cron -prosessia muokkauksen aikana.

Näytä nykyisen aikataulutiedoston sisältö:

crontab -l

Nykyisen aikataulutiedoston poistaminen:

crontab -r

Muokkaa käyttäjän crontab -tiedostoa komennolla [2]

crontab -e

crontab - taulukko koostuu 6 sarakkeesta , jotka on erotettu välilyönneillä tai sarkainmerkeillä . Ensimmäiset viisi saraketta asettavat suoritusajan ( minuutti , tunti , päivä , kuukausi , viikonpäivä ), ne voivat sisältää numeron, pilkuilla erotetun numeroluettelon, yhdysviivalla erotetun numeroalueen, symboleja *tai /. Järjestelmän crontab - tiedostoissa aikakenttien jälkeen ilmoitetaan käyttäjä, jolta komento suoritetaan. Kaikki muut merkkijonon merkit tulkitaan suoritettaviksi komennon parametreineen. Jos komento lähettää tekstiä vakiolähtöön, se lähetetään käyttäjän sähköpostiin .

* * * * * suoritettava komento ------ | | | | | | | | | ----- viikonpäivä (0-7) (sunnuntai = 0 tai 7) | | | ------- kuukausi (1-12) | | --------- kuukauden päivä (1-31) | ----------- tunti (0-23) ------------- minuutti (0-59)

Esimerkki crontab - tiedostosta :

# kommentit alkavat tavalliseen tapaan #-merkillä # käytä /bin/sh -komentoa SHELL = /bin/sh # lähetä tulokset tähän osoitteeseen MAILTO = [email protected] # lisää käyttäjän kotihakemisto hakemistoon PATH PATH = /bin:/ usr/bin:/home/paul/bin #### Työt alkavat tästä # suorita joka päivä klo 0 tuntia 5 minuuttia, lisää tulos lokiin/päivittäin 5 0 * * * $HOME /bin/daily.job >> $HOME /log/daily 2 > & 1 # suorita joka kuun 1. päivä klo 14:15 15 14 1 * * $HOME /bin/monthly # joka arkipäivä klo 22:00 0 22 * ​​* * 1 -5 echo "Aika kotiin" | mail -s "Kello on jo 22:00" john 23 */2 * * * echo "Käynnissä klo 0:23, 2:23, 4:23 jne." 5 4 * * aurinkokaiku "Juoksu sunnuntaina klo 4.05" 0 0 1 1 * kaiku " Hyvää uutta vuotta!" 15 10 .13 * * 1 .4 echo "Tämä viesti näytetään maanantaina ja torstaina klo 10:15 ja 13:15" 0 -59 * * * * echo "Aja joka minuutti" 0 -59/2 * * * * echo "Käyttää parittomina minuuteina" 1 -59/2 * * * * echo "Käyttää parittomina minuuteina" # 5 minuutin välein */5 * * * * echo "Viisi minuuttia on kulunut" # joka kuukauden ensimmäinen sunnuntai. -eq 7 on viikonpäiväkoodi, eli 1 -> maanantai , 2 -> tiistai jne. 0 1 1 -7 * * [ " $( date '+\%u' ) " -eq 7 ] && kaiku " Tämä tarra näytetään joka kuukauden ensimmäisenä sunnuntaina klo 1.00."

Ominaisuudet

  • Kaikki ehdot (alkamisaika) tarkistetaan "loogisella AND":lla, paitsi ehtoja "viikonpäivä" ja "kuukauden päivä" - määritettynä yhdessä, ne käsitellään "loogisella TAI":lla, eli "millä tahansa päivistä", mikä näkyy dokumentaatiossa (Ubuntu, Debian, FreeBSD). Tämä logiikka ei kuitenkaan ole ilmeinen, eikä sen avulla voit luoda ehtoa, kuten "joka kuukauden ensimmäinen maanantai" tai "joka perjantai 13. päivänä". Kehittäjät eivät muuta tätä toimintaa, koska he pitävät sitä standardina. [3]
  • Kaikkien crontab - tiedostojen tulee päättyä tyhjään riviin, muuten viimeinen sääntö tai koko tiedosto ohitetaan.
  • Crontab - tiedoston komennot käyttävät tavallista komentotulkkisyntaksia, mutta niitä ei voi jakaa useille riveille.
  • Suoritettavat tiedostot automaattisesti tarkistetuissa hakemistoissa, kuten /etc/cron.daily/ , ohitetaan, jos niiden nimessä on piste.
  • Crontab - syntaksi , jota käytetään muutaman minuutin välein siirtymän kanssa, voi johtaa odottamattomiin tuloksiin. Joten tallennus 1-56/5 * * * *ei käynnisty jokaisen tunnin 1. minuutilla; käynnistääksesi "5 minuutin välein alkaen tunnin ensimmäisestä minuutista" käytä muotoa 1-59/5 * * * *tai 1,6,11,16,21,26,31,36,41,46,51,56 * * * *.
  • Run-komennon merkkiä %käytetään rivinvaihdon välittämiseen komentoon (jos sitä ei ole pakotettu). Sitä seuraava komentoteksti välitetään suoritettavalle ohjelmalle ei komentoriviparametreina, vaan vakiosyötteen kautta .
  • Käynnistettyjen komentojen tulos lähetetään käyttäjälle, jonka puolesta käynnistys suoritettiin. Jos direktiivi sijaitsee crontab - tiedostossa ennen komentoa MAILTO=<new@email>, niin lähtötiedot lähetetään määritettyyn osoitteeseen.

Graafinen käyttöliittymä

Käyttäjien mukavuuden vuoksi monissa järjestelmissä on erityiset GUI -ohjelmat cronin hallintaan .

Gnome-aikataulu

Debian-pohjaisille jakeluille:

  • Asennus:sudo apt-get install gnome-schedule
  • Suorita: Sovellukset → Järjestelmätyökalut → Aikataulu [1]

kcron

Kcron on KDE - käyttöliittymä cron - asetustiedostojen muokkaamiseen . Apuohjelma käynnistyy Alt+F2 , muokkausikkunassa voit määrittää hiirellä:

  • täydellinen polku ohjelman suoritettavaan tiedostoon
  • oikea aika aloittaa ohjelma
  • ympäristömuuttujat, joita tarvitaan ohjelman suorittamisen aikana

Samankaltaisia ​​ohjelmia

  • NnCron  on Windowsin ajastin .
  • Task Scheduler  - Windowsin Tehtävien ajoitus ja sen konsoliapuohjelmaschtasks.exe.
  • at  - ajaa ohjelmia kerran tiettyyn aikaan.
  • anakron  - ohjelmien säännöllinen käynnistys, ei välttämättä täsmälleen määritettyyn aikaan: esimerkiksi jos kone sammutettiin tehtävässä määritettynä aikana, seanacronsuorittaa tehtävän myöhemmin.
  • inetd  - suorita verkkopyyntöpalveluohjelmia.
  • upstart  - käynnistä tapahtumapalveluohjelmat (yleistys sanoista cron, atd, anakron, inetd ).

Muistiinpanot

  1. Man cron Arkistoitu 28. toukokuuta 2007 Wayback Machinessa .
  2. Cron Howto Arkistoitu 15. toukokuuta 2011 Wayback Machinessa .
  3. Debian Issue Tracker -keskustelu arkistoitu 11. huhtikuuta 2018 Wayback Machinessa .

Linkit