Android

Cron-töiden ajoittaminen crontab-ohjelmalla

Söin päivän pikaruokaa - McDonalds, Subway, Arnolds, Jungle Juice Bar...

Söin päivän pikaruokaa - McDonalds, Subway, Arnolds, Jungle Juice Bar...

Sisällysluettelo:

Anonim

Cron on aikataulutusdeemoni, joka suorittaa tehtäviä tietyin väliajoin. Näitä tehtäviä kutsutaan cron-töiksi, ja niitä käytetään enimmäkseen järjestelmän ylläpidon tai hallinnan automatisointiin.

Voit esimerkiksi asettaa cron-työn automatisoida toistuvat tehtävät, kuten tietokantojen tai tietojen varmuuskopiointi, järjestelmän päivittäminen viimeisimmillä suojauskorjauksilla, levytilan käytön tarkistaminen, sähköpostien lähettäminen ja niin edelleen. Jotkin sovellukset, kuten Drupal tai Magento, vaativat cron-töitä tiettyjen tehtävien suorittamiseksi.

Cron-työt voidaan ajoittaa minuutin, tunnin, kuukauden päivän, kuukauden, viikonpäivän tai näiden yhdistelmän perusteella.

Mikä on Crontab-tiedosto

Crontab (cron-taulukko) on tekstitiedosto, joka määrittää cron-töiden aikataulun. Crontab-tiedostoja on kahta tyyppiä. Järjestelmänlaajuiset crontab-tiedostot ja yksittäisten käyttäjien crontab-tiedostot.

Käyttäjien crontab-tiedostot tallennetaan käyttäjän nimellä, ja niiden sijainti vaihtelee käyttöjärjestelmien mukaan. Red Hat -pohjaisessa järjestelmässä, kuten CentOS, crontab-tiedostot tallennetaan hakemistoon /var/spool/cron kun taas Debian- ja Ubuntu-tiedostot tallennetaan hakemistoon /var/spool/cron/crontabs .

Vaikka voit muokata käyttäjän crontab-tiedostoja manuaalisesti, on suositeltavaa käyttää crontab komentoa.

/etc/crontab ja /etc/cron.d olevat tiedostot ovat koko järjestelmän kattavia crontab-tiedostoja, joita vain järjestelmänvalvojat voivat muokata.

Useimmissa Linux-jakeluissa voit myös laittaa skriptejä /etc/cron.{hourly, daily, weekly, monthly} hour/day/week/month /etc/cron.{hourly, daily, weekly, monthly} hakemistoihin ja skriptit suoritetaan joka hour/day/week/month .

Crontab-syntaksi ja operaattorit

Jokainen käyttäjän crontab-tiedoston rivi sisältää kuusi kenttää, jotka on erotettu välilyönnillä, jota seuraa suoritettava komento.

* * * * * 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)

Ensimmäiset viisi kenttää voivat sisältää yhden tai useamman arvon, erotettu pilkulla tai arvoalueen, erotettuna tavuviivalla.

  • * -Tähteen operaattori tarkoittaa mitä tahansa arvoa tai aina. Jos sinulla on tähdetunnus Tunnit-kentässä, se tarkoittaa, että tehtävä suoritetaan joka tunti. , - Pilkkuoperaattori antaa sinun määrittää toistoarvojen luettelon. Jos esimerkiksi Hour-kentässä on 1, 3, 5 , tehtävä suoritetaan kello 1 am, 3 am ja 5. am. - -Viiva-operaattori antaa sinun määrittää arvoalue. Jos viikonpäivä-kentässä on 1-5 , tehtävä suoritetaan joka arkipäivä (maanantaista perjantaihin). / -Viivaoperaattori antaa sinun määrittää arvot, jotka toistetaan tietyn ajanjakson välillä. Esimerkiksi, jos sinulla on */4 Hour-kentässä, se tarkoittaa, että toiminto suoritetaan joka neljäs tunti. Se on sama kuin 0, 4, 8, 12, 16, 20 . Väliviivaoperaattorin edessä olevan tähden sijasta voit käyttää myös arvoalueita, 1-30/10 tarkoittaa samaa kuin 1, 11, 21 .

Järjestelmäkohtaiset Crontab-tiedostot

Järjestelmälaajuisten crontab-tiedostojen syntaksi on hiukan erilainen kuin käyttäjän crontabs. Se sisältää ylimääräisen pakollisen käyttäjäkentän, joka määrittelee, mikä käyttäjä suorittaa cron-työn.

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

Ennalta määritetyt makrot

On olemassa useita erityisiä Cron-aikataulumakroja, joita käytetään määrittämään yhteiset välit. Voit käyttää näitä pikavalintoja viiden sarakkeen päivämäärityksen sijasta.

  • @yearly (tai @annually ) - Suorita määritetty tehtävä kerran vuodessa 1. tammikuuta keskiyöllä (klo 12.00). Vastaa arvoa 0 0 1 1 * . @monthly - Suorita määritetty tehtävä kerran kuukaudessa keskiyöllä kuukauden ensimmäisenä päivänä. Vastaa arvoa 0 0 1 * * . @weekly - Suorita määritetty tehtävä kerran viikossa sunnuntain keskiyöllä. Vastaa arvoa 0 0 * * 0 . @daily - Suorita määritetty tehtävä kerran päivässä keskiyöllä. Vastaa arvoa 0 0 * * * . @hourly - Suorita määritetty tehtävä kerran tunnissa tunnin alussa. Vastaa arvoa 0 * * * * . @reboot - Suorita määritetty tehtävä järjestelmän käynnistyessä (käynnistysaika).

Linux Crontab -komento

Crontab-komennon avulla voit asentaa tai avata crontab-tiedoston muokattavaksi.

Voit käyttää crontab-komentoa tarkastella, lisätä, poistaa tai muokata cron-töitä seuraavilla vaihtoehdoilla:

  • crontab -e - Muokkaa crontab-tiedostoa tai luo se, jos sitä ei vielä ole. crontab -l - Näytä crontab-tiedoston sisältö. crontab -r - Poista nykyinen crontab-tiedosto. crontab -i - Poista nykyinen crontab-tiedosto kehoteella ennen poistamista. crontab -u - Muokkaa muuta crontab-tiedostoa. Edellyttää järjestelmänvalvojan oikeuksia.

Crontab-komento avaa crontab-tiedoston VISUAL tai EDITOR ympäristömuuttujien määrittämällä editorilla.

Crontab-muuttujat

Cron-demoni asettaa automaattisesti useita ympäristömuuttujia.

  • Oletuspolun asetukseksi on PATH=/usr/bin:/bin . Jos kutsumasi komento on cron-määritetyllä polulla, voit käyttää komennon absoluuttista polkua tai muuttaa cron $PATH -muuttujaa. Et voi implisiittisesti liittää :$PATH kuten tekisit tavallisilla komentosarjoilla. Oletusarvon asetukseksi /bin/sh . Voit asettaa toisen kuoren muuttamalla SHELL muuttujaa. Cron kutsuu komennon käyttäjän kotihakemistosta. HOME muuttuja voidaan ohittaa crontab-asetuksilla. Sähköposti-ilmoitus lähetetään crontab-tiedoston omistajalle. Voit korvata oletuskäyttäytymisen käyttämällä MAILTO ympäristömuuttujaa luettelolla (pilkuin erotettuna) kaikista sähköpostiosoitteista, jotka haluat vastaanottaa sähköposti-ilmoituksia. Jos MAILTO on määritelty, mutta tyhjä ( MAILTO="" ), postia ei lähetetä.

Crontab-rajoitukset

Järjestelmänvalvojat voivat /etc/cron.deny ja /etc/cron.allow hallita sitä, millä käyttäjillä on pääsy crontab komentoon. Tiedostot koostuvat luettelosta käyttäjätunnuksia, yksi käyttäjänimi riviä kohden.

Oletuksena on vain /etc/cron.deny ja se on tyhjä, mikä tarkoittaa, että kaikki käyttäjät voivat käyttää crontab-komentoa. Jos haluat estää tietyn käyttäjän pääsyn crontab-komentoihin, lisää käyttäjänimi tähän tiedostoon.

Jos /etc/cron.allow on olemassa, vain tiedostossa luetellut käyttäjät voivat käyttää crontab komentoa.

Jos kumpaakaan tiedostoa ei ole, vain käyttäjät, joilla on järjestelmänvalvojan oikeudet, voivat käyttää crontab komentoa.

Cron Jobs -esimerkkejä

Alla on joitain cron-työesimerkkejä, jotka osoittavat, kuinka ajoittaa tehtävä suoritettavaksi eri ajanjaksoina.

  • Suorita komento klo 15:00 joka päivä maanantaista perjantaihin:

    0 15 * * 1-5 command

    Suorita komentosarja 5 minuutin välein ja ohjasi standardilähdön dev null arvoon, vain vakiovirhe lähetetään määritettyyn sähköpostiosoitteeseen:

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

    Suorita kaksi komentoa joka maanantai kello 15.00 (käytä komentojen välillä operaattoria && ):

    0 15 * * Mon command1 && command2

    Suorita PHP-skripti 2 minuutin välein ja kirjoita lähtö tiedostoon:

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

    Suorita komentosarja joka päivä, joka tunti, tunnissa kello 8.00–16.00:

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

    Suorita komentosarja kunkin kuukauden ensimmäisenä maanantaina klo 7

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

    Suorita skripti klo 9.15 joka kuukauden 1. ja 15. päivänä:

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

    Aseta mukautetut HOME , PATH , MAILTO ja MAILTO muuttujat ja suorita komento joka minuutti.

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

johtopäätös

Olet oppinut luomaan cron-töitä ja ajoittamaan tehtäviä tiettynä ajankohtana.

Jätä kommentti, jos sinulla on kysyttävää.

cron crontab -pääte