Crontab - Jos sinulla on tällä hetkellä palvelinta raskas verkkosivusto, saatat joutua ajamaan tiettyjä prosesseja, kuten tietojen rikastamista tai pikkukuvien luomista taustalla häiritsemättä käyttöliittymää. No, Linux crontabilla on hyvä ohjelma, joka tekee täsmälleen sen: Cron.

Johdanto Croniin

Joten mikä tämä ohjelma on? Cron luokitellaan demoniksi, joka voi suorittaa ajoitettuja komentoja. Se käynnistyy automaattisesti, kun siirrytään usean käyttäjän suorittamiin tasoihin hakemistosta /etc/init.d. Se etsii spool-alueelta hakemistosta / var / spool / cron / crontabs crontab-tiedostoista, jotka on nimetty hakemistossa / etc / passwd olevien tilien mukaan. Päästäksesi hakemiston crontab-tiedostoihin sinun on käytettävä crontab-komentoa sen sijaan, että pääset suoraan niihin. Cron pystyy lukemaan myös hiukan erilaisen muodon / etc / crontab-tiedostosta, samoin kuin tiedostoista /etc/cron.d-tiedostosta.

Kun asetukset on määritetty, Cron herää joka minuutti, tutkii tallennettuja linux-yhteydenottoja ja tarkistaa komennon nähdäkseen, onko mitään suoritettavaa. Jos komento suoritetaan ja lähtö luodaan, ulostulo postitetaan sitten crontabin omistajalle tai käyttäjälle crontabin MAILTO-muuttujassa. Näitä prosesseja suorittavan cron-lasten kopiot on nimetty isoilla kirjaimilla, jotka näet ps- ja syslog-tulosteissa.

Cron tarkistaa myös minuutin välein muutokset spool-hakemistossa. Jos tapahtuu muutoksia, se tutkii sitten kaikkien linux crontabien modtime ja lataa muuttuneet uudelleen. Seurauksena on, että cronin ei tarvitse käynnistyä uudelleen, kun crontab-tiedosto vaihdetaan.

Kun kelloa vaihdetaan kolmella tunnilla tai vähemmän, on olemassa erityisiä näkökohtia, kuten kesäajan alkaessa ja lopussa. Jos aika siirtyy eteenpäin, ohitetussa ajassa suoritettavat työt muuttuvat toimimaan pian muutoksen jälkeen. Toisaalta, jos aika liikkuu taaksepäin, toistettuun aikaan kuuluvia töitä ei suoriteta uudelleen.

Vaikuttavat vain työt, jotka suoritetaan tiettynä ajankohtana tunnitöiden sijasta, tai työt, jotka on merkitty minuutti / tunti -kohdassa '*'. Luonnonvaraisilla autoilla määritetyt työt ajetaan välittömästi uuden ajan perusteella. Jos kello muuttuu yli kolme tuntia, uusi aika käytetään heti.

Red hat ja Debian -sovelluksissa cron käsittelee cron.d-tiedostoja linux crontab-tiedoston laajennuksina, koska ne seuraavat tiedoston erityismuotoa, mikä tarkoittaa, että ne sisältävät käyttäjäkentän. Tämän ominaisuuden tavoitteena on sallia paketit, jotka vaativat hienompaa ajoituksen hallintaa kuin päivittäiset, kuukausittaiset tai viikoittaiset hakemistot. Tällaiset tiedostot tulisi mieluiten nimetä niiden toimittajapakettien mukaan. Tiedostojen on oltava run-osille käytetyn nimeämiskäytännön mukaisia, koska niiden on muodostettava yksinomaan isoista ja pienistä kirjaimista, numeroista, tavuviivoista ja alaviivoista. Cron.d-hakemistossa olevia tiedostoja tarkkaillaan muutosten varalta, kuten linux crontab -hakemistossa. Kun komennot ovat / bin / ls, varmista, että käytät absoluuttisia polunimiä oikean komennon kutsumiseen.

Johdanto Linux Crontab -sovellukseen

Nyt kun tiedät cronin hyviä puolia, tarkastellaan tarkkaan linux crontabia, joka on ohjelma taulukoiden asentamiseen, poistamiseen tai luettelointiin itse daemonin ajamiseksi. Jokaisella käyttäjällä voi olla oma linux crontab -sovelluksensa ja tiedostot ovat saatavilla crontabs-hakemistossa, mutta niitä ei ole tarkoitettu suoraan muokkaamiseen.

Mikä tahansa käyttäjän linux crontab -sovelluksessa annettu komento suoritetaan käyttäjän omistaman käyttäjän kanssa. Välilehdet, välilyönnit ja tyhjät rivit jätetään yleensä huomioimatta. Rivejä, joissa hash-merkki on ensimmäinen kuin välilyönti, jätetään huomioimatta, koska niitä käsitellään kommenttina. On syytä huomata, että kommentit eivät ole sallittuja samalla cron-komennon rivillä, koska ne luetaan osana komentoa. Samanlaisessa huomautuksessa kommentit eivät ole myöskään sallittu riveille, joiden ympäristömuuttuja-asetukset ovat.

Linux crontab -sovelluksessa aktiivinen rivi, jolla on cron-komento tai ympäristömuuttuja-asetus, joka on muodossa “nimi = arvo”, johon voidaan tarvittaessa lisätä välilyöntejä yhtäläisyysmerkin ympärille. Mahdolliset myöhemmät välilyönnit ovat osa nimiarvoa. Arvon merkkijono voitaisiin sijoittaa yhden- tai kaksinkertaisiin hakulainauksiin jäljellä olevien tai tyhjien tilojen säilyttämiseksi. Sitä ei jäsentä ympäristön korvaamiseksi, joten saatat huomata, että rivit, kuten ”PATH = $ HOME / bin: $ PATH”, eivät toimi odotetulla tavalla.

Cron määrittää monet ympäristöasetukset automaattisesti, kuten HOME ja LOGNAME asetetaan käyttäjän passwd-riviltä ja SHELL asetetaan kohtaan / bin / sh ja PATH asetetaan / usr / bin: / bin. Voit ohittaa PATH, SHELL ja HOME crontab-asetuksilla. LOGNIMIA ei voi kuitenkaan muuttaa, koska se on käyttäjä, jolta työ suoritetaan. BSD-järjestelmissä tätä muuttujaa voidaan kutsua USERiksi, jolloin myös USER asetetaan.

Jos sähköpostien lähettäminen on osa linux crontab -sovelluksessa käytettäviä komentoja, cron tarkastelee myös MAILTOa. Jos muuttuja on määritelty ja se ei ole tyhjä, nimetylle käyttäjälle lähetetään viesti. Mutta jos se on tyhjä, postia ei lähetetä ja sen sijaan posti lähetetään linux crontab -omistajalle. Jos cron.allow-tiedosto on saatavana, sinun on oltava lueteltu siinä, jotta voit käyttää tätä komentoa. Jos tätä tiedostoa ei ole, mutta cron.deny-tiedosto on olemassa, sinun pitäisi poistaa siitä tiedostosta komennon käyttämiseksi. Jos kumpaakaan tiedostoa ei ole, vain superkäyttäjä voi käyttää komentoa käyttökohtaisista parametreista riippuen. Vaihtoehtoisesti kaikki käyttäjät voivat käyttää komentoa, kuten tavallisissa Debian-järjestelmissä.

Jos -u-vaihtoehto on käytettävissä, se antaa käyttäjänimen, jonka linux crontab vaatii säätämistä. Jos sitä ei anneta, crontab tutkii komennon suorittavan käyttäjän crontab-tiedoston. On tärkeää käyttää tätä vaihtoehtoa aina turvallisuuden vuoksi ajaessasi su: n sisällä, koska linux crontab voi sekoittaa su. -L-vaihtoehto on käytettävissä nykyiselle crontab-näytölle, joka näytetään vakioulostulossa, kun -r-vaihtoehto poistaa nykyisen crontab-tiedoston. Komentoa -e käytetään nykyisen linux crontab -sovelluksen muokkaamiseen editoijien, jotka ovat määrittäneet EDITOR tai VISUAL, ympäristömuuttujat. Et voi käyttää mitään editoria, joka linkittää ja luo tiedoston uudelleen. tarvitset editorin, joka muokata tiedostoa paikallaan. Kun olet poistanut editorista, mukautettu linux crontab asennetaan automaattisesti.

Cron tukee pam_env-moduulia myös Debian GNU / Linux -järjestelmässä, lataamalla ympäristö moduulitiedoston mukaisesti. On kuitenkin huomattava, että PAM-asetus ei ohita edellä mainittuja asetuksia tai crontab-tiedoston asetuksia. Jos haluat PATH: n, joka poikkeaa roskapostin sijainnista, sinun on määritettävä se crontab-tiedostoon. Cron lähettää oletuksena sähköpostit 'teksti / tavallinen' -tyyppisellä sisältötyypillä merkkijoukkoparametrilla, joka asetetaan sen paikan koodisarjaan / merkkikarttaan, jossa cron on käynnistynyt, mikä on oletusarvoinen järjestelmän locale ilman ympäristömuuttujaa tai muuttujien asettama kieli. Voit lisätä omat merkkikoodaukset postin tulosteeseen asettamalla muuttujat 'Content_Transfer_Encoding' ja 'Content_Type' crontabsissa vastaamaan nimien posti otsikot.

Suositellut kurssit

  • Online R Studio Anova -tekniikan kurssi
  • Sertifiointikoulutus AngularJS: ssä
  • ISTQB: n tason 1 sertifiointikurssi
  • Ohjelmistojen testauksen perusteiden sertifiointikoulutus

Työskentely Crontabilla

Crontab-komento, joka löytyy Unix-kaltaisista ja Unix-käyttöjärjestelmistä, voidaan käyttää päätteen kautta. Jos haluat nähdä mitä crontab on käynnissä, avaa järjestelmän pääte ja suorita seuraava komento:

$ sudo crontab -l

Voit muokata crontab-työluetteloita käyttämällä seuraavaa komentoa:

$ sudo crontab -e

Tämä komento avaa järjestelmässäsi oletuseditorin, joka voi olla pico tai vio, muuttaaksesi crontabia. Jos haluat tallentaa crontab-työn crontab-tiedostoon, tallenna ja poistu editorista. Crontab-työt tai cronjobs voidaan kirjoittaa seuraavasti:

* * * * * /bin/execute/this/script.sh

Yllä olevassa komennossa on viisi tähdellä, joista kukin edustaa eri päivämääräosia työn ajoittamiseksi. Täällä he ovat:

  1. Minuutti, nollasta 59: een
  2. Tunti, joka vaihtelee nollasta 23: een
  3. Kuukauden päivä vaihtelee yhdestä 31 päivään
  4. Kuukausi vaihtelee yhdestä 12: een
  5. Viikonpäivä vaihtelee nollasta kuuteen ja nolla tarkoittaa sunnuntai

Yllä oleva luettelo on annettu järjestyksessä, joten sinun on ensin määritettävä minuutti, jota seuraa tunti, kuukauden päivä, kuukausi ja viikonpäivä. Voit pitää tähdellä, jos et halua määritellä kenttään, mutta on tärkeää huomata, että symboli tarkoittaa "jokaista". Jos jätät kaikki viisi kenttää määrittelemättä tähdellä ehjänä, se tarkoittaa tunnin jokaista minuuttia, viikon jokaista päivää ja kuukautta.

Oletetaan nyt, että haluat suorittaa komentosarjan vain joka sunnuntain keskipäivä. Tässä on mitä teet:

0 12 * * 0 /bin/execute/this/script.sh

Nyt komentosarja suoritetaan, kun järjestelmäkello saavuttaa 1200 tuntia joka sunnuntai, joka kuukausi joka viikko. Nyt, jos haluat suorittaa skriptin joka arkipäivä klo 12.00, kirjoitat tässä:

0 12 * * 1-5 /bin/execute/this/script.sh

Cron suorittaa komennot, kun vuosi, kuukausi, tunti ja minuutti kentät vastaavat nykyistä aikaa tai kun ainakin kuukauden päivä ja vuosi vastaavat nykyistä aikaa. Kenttä voidaan merkitä tähdellä tähdellä 'ensimmäinen viimeinen'. Numeroalueet ovat sallittuja, kun alueet ovat kaksi numeroa, jotka erotetaan tavulla. Erityinen alue on osallistava, joten alue 8–11 tunnille määrittää suorituksen kahdeksannessa, yhdeksännessä, kymmenennessä ja yhdestoista tunnissa. Luetteloita tuetaan myös, ja jokainen luku erotetaan pilkuilla, kuten '1, 2, 8, 9'. Voit myös sekoittaa ja sovittaa yhteen, joten se voi olla '1, 2, 8-11'.

Voit käyttää asteikkoarvoja yhdessä alueiden kanssa, kun '/' alueen jälkeen määrittelee ohituksen numeron arvon alueella. Esimerkiksi '0-11 / 2' tuntikentässä määrittelee komentojen suorittamisen joka toinen tunti, joka kirjoitettaisiin luettelona esimerkiksi: '0, 2, 4, 6, 8, 10'. Askeleet voidaan sallia tähdellä, kuten '* / 2' tarkoittaa komentoa, joka suoritetaan kahden tunnin välein. Päivä- ja kuukausi-kentissä voit käyttää kyseisen päivän tai kuukauden kolmea ensimmäistä kirjainta, ja tapauksella ei ole väliä. Luetteloja ja nimialueita ei kuitenkaan tueta. Suorituspäivä voidaan määrittää kahteen kenttään: viikonpäivä ja kuukauden päivä. Jos molemmat kentät ovat rajoitettuja, komento suoritetaan, kun jompikumpi kenttä vastaa.

Loppu rivistä on 'kuudes' kenttä, joka määrittelee suoritettavan komennon. Rivin komento-osa vie enintään uuden rivin tai enintään% merkkiä. Se suoritetaan sh: llä tai crontab-tiedoston SHELL-muuttujan määritetyllä kuorella. Komenton% muuttuu uusien rivien merkkeiksi, paitsi jos niitä on pakennettu alaviivalla '\'. Kaikki ensimmäisen% -merkin jälkeen lähetetyt tiedot lähetetään komennolle normaalitulona. Et voi jakaa yhtä komentoriviä useaan riviin.

Aikataulutemppuja Crontabissa

Muotoilu voi viedä jonkin verran tottua, mutta tässä on joitain temppuja, jotka auttavat sinua ulos. Jos haluat suorittaa crotjob kymmenen minuutin välein, voit joko kirjoittaa sen tällä tavalla:

0, 10, 20, 30, 40, 50 * * * * / bin/execute/this/script.sh

Tai voit kirjoittaa sen tällä tavalla, mikä on helpompaa:

* / 10 * * * * /bin/execute/this/script.sh

Sinulla on myös erityisiä sanoja, jotka voit lisätä ensimmäisen minuutin kenttään numeron sijasta, kuten:

  • @ uudelleenkäynnistys: tämä suorittaisi komentosarjan kerran järjestelmän käynnistyksen yhteydessä
  • @ vuosi: suorita komento kerran vuodessa (vaihtoehtoinen muoto olisi ”0 0 1 1 *”)
  • @ vuosittain: vaihtoehto vuotuiselle avainsanalle
  • @ kuukausi: suorittaa komento kerran kuukaudessa (“0 0 1 * *”)
  • @ viikoittain: juoksee kerran viikossa (“0 0 * * 0”)
  • @päiväpäivä: juoksee kerran viikossa (“0 0 * * *”)
  • @midnight: vaihtoehto päivittäiselle avainsanalle
  • @ tunti: juoksee joka tunti (“0 * * * *”)

Tulostimen tallennus

Oletusarvon mukaan cron tallentaa työn tulosteen käyttäjän postilaatikkoon tai juurihakemistoon. Mutta voit tehdä tulostuksesta yksinkertaisemman ja edustavamman tallentamalla sen erilliseen lokitiedostoon. Näin teet sen:

* / 10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2> & 1

Linux pystyy raportoimaan eri tasoilla. Sinulla on vakiovirheet STDERR ja standardilähtö STDOUT, merkitty vastaavasti 2 ja 1. Seuraavassa lausunnossa kerrotaan, että STDERR ja STDOUT tallennetaan molemmille, jotta luodaan yksi viesti- ja virhevirhe:

2> & 1

Joten olemme määritelleet lähtövirran, meidän on nyt annettava sille kohde. '>' Korvaa tiedoston ja '>>' liittää sen. Lisäykseen, joka on aina turvallisempaa, voit käyttää seuraavaa komentoa:

>> /var/log/script_output.log

johtopäätös

Kuten näette, cron antaa sinun asettaa tehtäviä suorittamaan automaattisesti säännöllisin väliajoin taustalla. Tämä mahdollistaa varmuuskopioiden automaattisen luomisen, päivitysten ajoituksen, tiedostojen synkronoinnin ja paljon muuta. Voit tehdä kaiken tämän ja enemmän crontabilla.

Suositellut artikkelit: -

Tässä on artikkeleita, jotka auttavat sinua saamaan lisätietoja Linux Crontabista, joten käy vain linkin läpi.

  1. Linux-haastattelua koskevat kysymykset ja vastaukset Hyödyllisiä ja eniten kysyttyjä
  2. Ura Linuxissa
  3. 10 parasta hyödyllistä Linux-sovellusta järjestelmänvalvojille
  4. Linux vs. Windows 10