Tehtävien ajoittaminen Linuxissa Cronin ja Crontabin avulla

Tehtävien ajoittaminen Linuxissa Cronin ja Crontabin avulla

Tiesitkö että Terän juoksija asetetaan vuonna 2019? Siitä on kolme vuotta! Mainitsematta Takaisin tulevaisuuteen 2 , missä he aikamatkaavat eteenpäin vuoteen 2015. Silti meillä ei ole lentäviä autoja, eikä joukossamme ole replikantteja (tietääkseni).





On helppoa olla pettynyt nykyiseen tekniikkaan, kun vertaamme sitä kuvitteellisiin tulevaisuuden kuvauksiin. Silti nykyään puhelimemme, tietokoneemme ja jopa talomme voivat tehdä hämmästyttäviä asioita. Kyky automatisoida tehtäviä on yksi niistä.





Jokainen Linux-käyttäjä voi hyötyä ajoitustehtävistä riippumatta siitä, liittyvätkö he järjestelmään (kuten vanhojen lokien ja päivittää paketteja ) tai palvella käyttäjää (sähköpostin tarkistaminen, podcastien lataaminen ...). Windows -käyttäjillä on ollut Task Scheduler Windows 95: n jälkeen. Apuohjelma, joka suorittaa saman työn Linuxissa, on nimeltään cron, ja tässä kerromme kuinka sitä käytetään.





kuinka estää sovellus iPhonessa

Mikä on Cron?

Cron on järjestelmäpalvelu, joka toimii taustalla, tarkistaa ajoitetut tehtävät ja suorittaa ne, jos niitä löytää. Tehtävät - joita kutsutaan myös nimellä 'cron -työt' - määritellään erityisissä kokoonpanotiedostoissa (crontabs), jotka cron skannaa joka minuutti. Useita cron -versioita löytyy eri Linux -jakeluista. Esimerkiksi Fedoran haarukkaa kutsutaan cronie , ja niitä on myös fcron , bcron ja dcron . Joissakin on lisäominaisuuksia, kun taas toiset keskittyvät enemmän turvallisuuteen, mutta ne kaikki perustuvat samaan ajatukseen.

Tämä opas on kirjoitettu vixie-cronille, joka on yleisin cron-versio ja joka löytyy Ubuntusta ja sen johdannaisista. Vaikka useimmat ohjeet koskevat myös muita cron -toteutuksia, saattaa olla pieniä eroja, joten tarkista niiden oppaat, jos päätät vaihtaa.



Mikä on Crontab?

Jos aiot vakavasti hallita aikasi, sinulla on todennäköisesti jonkinlainen kalenteri - sovellus tai ainakin paperi. Crontab muistuttaa tietokoneesi kalenteria. Se sisältää tiedot ajoitetuista tehtävistä ja kertoo cronille, mitkä komennot suoritetaan mihin aikaan.

Itse asiassa järjestelmässäsi on useita crontab -tiedostoja. Jokaisella käyttäjällä on oma crontab, mukaan lukien root (järjestelmänvalvoja). Käyttäjän crontabit tallennetaan





/var/spool/cron/crontabs/

. The

crontab -l

komento näyttää nykyisen käyttäjän crontab -tiedoston. Voit tarkistaa root crontab -painikkeen





sudo crontab -l

.

Lisäksi siellä on järjestelmän crontab -tiedosto

/etc/crontab

jota käytetään järjestelmän laajuisiin tehtäviin. Yleensä ne ovat suoritettavien, juuriomisteisten komentosarjojen muodossa

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

ja

/etc/cron.monthly/

kansioita ja joissakin jakeluissa

/etc/cron.d/

kansio samoin. Yleisesti ottaen sinun ei tarvitse käsitellä näitä tehtäviä, koska useimmat niistä luodaan automaattisesti asennetuilla sovelluksilla.

Tehtävien ajoittaminen Cronin kanssa

Se kuulostaa yksinkertaiselta: voit ajoittaa tehtäviä lisäämällä ne vain crontabiin. Koska crontab on erityinen määritystiedosto, sitä ei suositella muokkaamaan manuaalisesti. Käytä sen sijaan

crontab -e

komento. Jos haluat muokata pääkäyttäjän tai muiden käyttäjien crontab -tiedostoja, suorita komento järjestelmänvalvojan oikeuksilla ja lisää käyttäjänimi -u -vaihtoehdon jälkeen:

sudo crontab -u root -e
sudo crontab -u username -e

Crontab -tiedostossa on kaksi osaa. Ensimmäinen sisältää ympäristömuuttujia, jotka asetetaan automaattisesti. Voit turvallisesti muuttaa PATH-, HOME- ja SHELL -muuttujia sekä muokata MAIL -muuttujaa.

Tiedoston toinen osa on varsinainen aikataulu aikataulutetuille tehtävillesi. Jokaisessa tehtävässä on taulukossa rivi (rivi), jossa sarakkeet edustavat seuraavia arvoja:

Tehtävien ajoittamiseksi sinun on tiedettävä vähän crontab -syntaksista:

  • Numeroiden tulee olla kokonaislukuja (kokonaislukuja), ja voit käyttää tähtiä (*) missä tahansa sarakkeessa jokerimerkiksi eli joka minuutti/päivä/kuukausi ....
  • Varo asettamasta Kuukauden päivä -sarakkeessa päivämäärää, joka ei tapahdu Kuukausi -sarakkeessa määritetyssä kuukaudessa (esimerkiksi 30. helmikuuta).
  • Sekä kuukausi- että viikonpäivä -sarakkeet hyväksyvät lyhyet nimet kuukausille ja päiville, ja ne eivät erota kirjaimia.
  • Viikonpäivä -sarakkeessa sekä 0 että 7 tarkoittavat sunnuntaita. Tunti-sarake vaatii armeijan ajan (24 tunnin) muodon, mutta et voi käyttää numeroa 24-sen sijaan 0 tarkoittaa klo 12.00 Tämä johtuu siitä, että minuutit, tunnit ja viikonpäivät alkavat 0 sijasta 1.
  • Sekuntia ei tueta, joten et voi ajoittaa tehtävää tietylle sekunnille.

Voit ajoittaa sisällyttävät ajanjaksot yhdysmerkillä (14-22 kohdassa 'Tunnit' suorittaa tehtävän jatkuvasti klo 14.00-22.00) tai suorittaa yksittäisen tehtävän useita kertoja määrittämällä pilkuilla erotetun luettelon (1, 3,5 kohdassa 'Viikonpäivä' suorittaa tehtävän maanantaina, keskiviikkona ja perjantaina).

Samaan aikaan askelarvoja edustaa kauttaviiva (/), ja ne osoittavat ohitusten määrän alueella; esimerkiksi 3-20/3 kohdassa 'Tunnit' suorittaa tehtävän joka kolmas tunti kello 3.00-20.00. Tästä on hyötyä, kun haluat toistaa tehtävät X tunnin välein, koska voit yhdistää tähden ja askeleen (*/X). Voit yhdistää alueita luetteloihin ja vaiheisiin alueiden kanssa niin kauan kuin käytät numeroita. Toisin sanoen yhdistelmät, kuten 'jan-mar' tai 'ti, pe-su', eivät ole sallittuja.

Vaihtoehtoisesti sen sijaan, että asetat arvon jokaiselle sarakkeelle, voit kirjoittaa rivin alkuun vain @weekly, @yearly, @monthly, @daily tai @hourly, jota seuraa komento. Tällaisessa aikataulussa tehtävät suoritetaan ensimmäisessä mahdollisessa tapauksessa, joten @weekly toimisi viikon ensimmäisen päivän keskiyöllä. Jos haluat suorittaa tehtävän heti, kun järjestelmä (uudelleen) käynnistyy, käytä @reboot -komentoa.

Tässä esimerkissä olemme ajoittaneet varmuuskopion joka päivä klo 8.20 ja 20.20. Taustakuva vaihtuu automaattisesti joka kolmas päivä klo 19.00, ja käsikirjoitus tarkistaa uudet podcastit joka maanantai klo 10.20 ja 20.20. Syntymäpäivämuistutus on asetettu 25. maaliskuuta ja se suoritetaan 30 minuutin välein määritetyn ajan kuluessa. Lopuksi skripti tarkistaa sähköpostin 15 minuutin välein 8-20, mutta vain työpäivinä. Voit järjestää crontab -välilehdesi sarakkeiden välissä olevilla välilyönneillä ja välilehdillä, mutta ei niiden sisällä (älä laita välilyöntejä pilkujen, yhdysviivojen ja kauttaviivojen väliin).

Jos tämä kaikki kuulostaa liian monimutkaiselta, älä huoli - voit aina luottaa Internetiin. Työkalut kuten Crontab -generaattori , Crontab.guru ja Corntab auttavat sinua luomaan cron -töitä tietämättä mitään crontab -syntaksia. Ne näyttävät, milloin työ suoritetaan seuraavaksi, ja tarjoavat malleja yleisesti käytetyille lausekkeille. Crontab.guru on joukon paras, koska sen avulla voit testata crontab-syntaksia reaaliaikaisesti, joten näet heti, miten muutokset vaikuttavat aikatauluun.

Kuinka tarkistaa, suoritetaanko Cron -työt

Cronin on tarkoitus toimia hiljaa taustalla ja antaa sinun työskennellä häiriöttömästi, kun se huolehtii tehtävistäsi. Mutta miten voit varmistaa, että se todella toimii?

Cronissa on sisäänrakennettu sähköposti-ilmoitusominaisuus, mutta tämä edellyttää vähintään yksinkertaisen paikallisen sähköpostipalvelimen määrittämistä. Monet kotikäyttäjät eivät ole halukkaita määrittämään tätä, eivätkä monet jakelut tarjoa sitä oletuksena (esimerkiksi Ubuntu ei). Nopein tapa tarkistaa cron on tarkistaa järjestelmän loki tällä komennolla:

cat /var/log/syslog | grep -i cron

-I -vaihtoehto tekee kyselystämme pienet ja pienet kirjaimet. On mahdollista, että cronilla on oma lokitiedosto jossain

/var/log/

, joten katso sieltä, jos tämä komento ei tuota hyödyllisiä tuloksia.

Jos sinun on tallennettava tietyn cron -työn tulos, voit ohjata sen tiedostoon. Anna tiedoston polku ja nimi crontabin viimeiseen sarakkeeseen sen komennon jälkeen, jonka haluat suorittaa:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Yhden symbolin> käyttäminen korvaa tiedoston aina, kun komento suoritetaan. Voit välttää tämän käyttämällä >> sen sijaan - se liittää tuloksen olemassa olevaan tiedostoon.

Mitä jos Cron ei toimi?

Voi tapahtua, että olet lisännyt joitakin tehtäviä, tarkistanut järjestelmälokit ja huomannut, että ne eivät toimi niin kuin pitäisi. Seuraavassa on muutamia asioita, joita sinun tulee harkita - ja olla varovainen - yrittäessäsi korjata ongelmaa.

Onko cron -palvelu käynnissä?

Kuten tiedät, cron -demonin pitäisi toimia taustalla. Varmista, että näin todella on. Palvelua kutsutaan joko crondiksi tai vain croniksi.

Systemd: tä käyttäville jakeluille:

systemctl status cron

Upstartia käyttävät jakelut:

service cron status

Jos jakelusi käyttää vanhaa System V init -lähestymistapaa, luettele kaikki palvelut, joissa on:

kipu itse kääntää englanniksi
initctl list

ja katso onko cron listattu.

Onko sinulla edes oikeus crontab -tiedostoon?

Tarkasta sinun

/etc

kansio nimetyille tiedostoille

cron.allow

ja

cron.deny

. Ubuntussa kumpaakaan ei pitäisi olla olemassa, mikä tarkoittaa, että kaikki käyttäjät voivat hallita cron -töitä. Jos kuitenkin on

miksi en voi rajata esikatselussa
cron.allow

tiedoston, sen on sisällettävä käyttäjänimesi. Päinvastoin, jos

cron.deny

tiedosto on olemassa, käyttäjätunnuksesi ei saa olla siinä. Poistuminen

cron.deny

tiedosto tyhjä tarkoittaa, että vain root ja käyttäjät, jotka on lueteltu

cron.allow

voi olla crontab -tiedostoja.

Onko muuttujasi asetettu oikein?

Crontab asettaa SHELL -muuttujan asetukseksi automaattisesti

/bin/sh

. Kuitenkin, jos valitsemasi kuori on kala tai bash, sinun pitäisi muuttaa SHELL -muuttuja

. Samoin PATH -muuttuja sisältää oletuksena vain muutaman hakemiston. Tässä crontab etsii Linux -komentoja. Jos cron -työsi ei onnistu, se voi johtua siitä, että crontab ei 'näe' käyttämääsi komentoa. Tämän välttämiseksi lisää komennot sisältävät hakemistot PATH -muuttujaan kaksoispisteillä erotettuna:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Jos et halua muokata tätä crontab -tiedostossasi, voit määrittää nämä muuttujat komentosarjassa, jonka haluat suorittaa cron -tehtävänä.

Onko crontab -muotoilusi kohdillaan?

Crontabin syntaksi ei ole aivan sujuvaa. Vaikka vahvistat sen aiemmin mainituilla verkkotyökaluilla, pieni virhe voi silti estää cronia suorittamasta töitäsi. Ole varovainen:

  • lisää tyhjä rivi crontab -tiedoston loppuun
  • paeta % -merkistä vinoviivalla, jos komento sisältää sen
  • kirjoita kommentit erillisinä riveinä, jotka alkavat #: lla. Älä kirjoita kommentteja samaan riviin ympäristömuuttujien kanssa tai cron -työkomentojen viereen.

Onko sinun todella käytettävä terminaalia?

Ehdottomasti ei. KDE -käyttäjät voivat ajoittaa cron -töitä KCronilla, joka on käytettävissä osoitteesta Järjestelmäasetukset> Tehtävien ajoitus moduuli. Suora käyttöliittymä, jonka avulla voit valita ja muokata kaikkea muutamalla hiiren napsautuksella, on KCronin käyttö ilo.

Jos pidät GNOMEsta, niin sitten GNOME -aikataulu on sinulle. Lähestymistapa on samanlainen, vaikka käyttöliittymä on odotetusti hieman erilainen. Se tarjoaa edistyneen tilan hienojakoisia muutoksia varten, ja sen mukana tulee paneelisovelma, josta voit hallita tehtäviä suoraan.

Sinun pitäisi olla tietoinen muista ratkaisuista, kuten Crontab-käyttöliittymä ja Minicron . Ne sopivat paremmin käyttäjille, jotka hallitsevat useita koneita ja cron-töitä, ja yksi hienoimmista ominaisuuksista on verkkopohjainen käyttöliittymä.

Onko olemassa Cron -vaihtoehtoja?

Vaikka cron on melkein Linuxin tavallinen tehtävien ajoitus, se ei varmasti ole ainoa. The käskystä on täydellinen nopeaan, kertaluonteiseen työhön, joka voidaan ajoittaa suoraan komentoriviltä ilman erityisiä määritystiedostoja. Jos tarvitset enemmän, on GNUbatch , joka tuo käsityksen riippuvuudesta. GNUbatchin avulla voit asettaa erityisehdot jokaiselle työlle tai asettaa ajoitetun tehtävän riippumaan edellisestä. Jotain vastaavaa voidaan saavuttaa järjestelmän ajastimet . Vaikka järjestelmäkäyttäjät ovat vähemmän käytännöllisiä konfiguroida kuin cron, ne voivat muistaa, jos tehtävä ohitti aikataulun tietokoneen ollessa sammutettuna, ja suorittaa sen seuraavan kerran, kun se käynnistetään.

Tämä on asia, jota cron ei voi tehdä yksin. Se sopii sellaisenaan palvelimille ja tietokoneille, jotka ovat jatkuvasti käynnissä, mutta se ei suorita työtä, joka oli ajoitettu tietokoneen ollessa sammutettuna. Tämä on missä anacron tulee peliin. Se ei teknisesti ole 'vaihtoehto' tai korvaaja cronille. Sen sijaan anacron täydentää cronia ja sitä tulisi käyttää sen rinnalla, kuten monissa Linux-jakeluissa, mukaan lukien Ubuntu ja Ubuntu-pohjaiset tuotteet. Anacron kirjaa lokin, kun tehtävä on viimeksi suoritettu, ja tarkistaa, onko järjestelmästä sammutettaessa ilmenneitä esiintymiä. Se suorittaa ne, kun käynnistät tietokoneen uudelleen, mutta jokainen tehtävä voidaan suorittaa vain kerran päivässä.

Jotkut cron -versiot, kuten fcron, tarjoavat oletusarvoisesti anacron -ominaisuuksia. Kokeneet käyttäjät saattavat haluta katsoa Hcron tai SuperCron , jotka tuovat monia parannuksia cron -perustoimintoihin, mutta ovat myös hieman haastavia hallita.

Entä sinä? Miten järjestät digitaaliset tehtävät? Mitä tehtäviä ajoitat Linuxissa? Jaa tarinasi ja vinkit cronin käyttöön kommenteissa.

Kuvaluotto: aikataulutaulu kirjoittanut Gonzalo Aragon Shutterstockin kautta

Jaa Jaa Tweet Sähköposti 12 videosivustoa, jotka ovat parempia kuin YouTube

Tässä muutamia vaihtoehtoisia videosivustoja YouTubelle. Niillä jokaisella on eri markkinarako, mutta ne kannattaa lisätä kirjanmerkkeihisi.

Lue seuraava
Liittyvät aiheet
  • Linux
  • Linux
Kirjailijasta Ivana Isadora Devcic(24 artikkelia julkaistu)

Ivana Isadora on freelance -kirjailija ja kääntäjä, Linux -ystävä ja KDE -fangirl. Hän tukee ja edistää ilmaisia ​​ja avoimen lähdekoodin ohjelmistoja ja etsii aina uusia, innovatiivisia sovelluksia. Ota selvää, miten voit ottaa yhteyttä tässä .

Lisää Ivana Isadora Devcicilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi