Cron & crontab, azaldu

Lucaine zuen argitara duela denbora gutxi cron eta crontab-i buruzko tutorial bikaina partekatzea merezi duela uste dut. Cron Windows-en Ataza Programatuen pareko mota da, soilik terminaletik maneiatzen dela. Helburu bera lortzeko interfaze bisuala nahiago dutenek ikus dezakete beste artikulu bat.

Zer da cron?

Cron izena grezierazko chronos-etik dator, "denbora" esan nahi duena. Unix sistema eragilean, cron atzeko planoko prozesuen kudeatzaile (daemon) erregularra da, prozesuak edo script-ak aldian-aldian exekutatzen dituena (adibidez, minutu, egun, aste edo hilero). Exekutatu behar diren prozesuak eta exekutatu behar diren denbora zehazten dira crontab fitxategian.

Nola funtzionatzen du?

Kron deabrua abiarazten da /etc/rc.d/ o /etc/init.d banaketaren arabera. Cron atzeko planoan exekutatzen da, crontab atazen taula minuturo egiaztatzen du / etc / crontab en / var / spool / cron burutu beharreko zereginen bila. Erabiltzaile gisa komandoak edo scriptak gehi ditzakegu zereginekin cron-i prozesu batzuk automatizatzeko. Hau erabilgarria da, adibidez, sistema baten edo segurtasun kopia sistema on baten eguneratzea automatizatzeko.

Lotutako artikulua:
Tutoriala: instalatu .tar.gz eta .tar.bz2 paketeak

Zer da Crontab?

Crontab erabiltzaileak zehaztutako orduan exekutatu beharreko komandoen zerrenda gordetzen duen testu fitxategi sinplea da. Crontab-ek gidoia edo komandoa exekutatu behar den eguna eta ordua, exekuzio baimenak eta atzeko planoan egingo ditu egiaztatuko ditu. Erabiltzaile bakoitzak bere crontab fitxategia izan dezake, hain zuzen ere / etc / crontab root erabiltzailearen crontab fitxategia dela suposatzen da, erabiltzaile arruntek (eta baita root-ek) beren crontab fitxategia sortu nahi dutenean crontab komandoa erabiliko dugu.

Crontab erabiltzaile anitzeko sistemetan cron zereginak kudeatzeko modurik errazena da, sistema erabiltzaile soil edo root erabiltzaile gisa.

Crontab erabiliz

Adibide sinple batekin hasi gara.

Sistema baten eguneratzea automatizatuko dugu, "Beti eguneratu behar dut eta hori ez zait gustatzen!" Gogaikarriak ezabatzeko.

Lotutako artikulua:
Sistema ezagutzeko aginduak (hardwarea eta software konfigurazio batzuk identifikatu)

Lehenik eta behin gidoi bat egingo dugu. Script honi cron-ek deituko dio eta nahi ditugun argibide guztiak jasoko ditu; beraz, hainbat kasutan eta hainbat modutan probatu behar da cron-en sartu aurretik, honelako eguneratze script sinplea:

#! / bin / bash #script update example #choose your distribution # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Kendu # distro marratik. Ubuntu / Debian bada, apt-get-rekin hasten da.

Script-a update.sh izenarekin gordetzen dugu (adib. Script-ak zure etxea). Aipatutako scriptaren exekuzio baimenak aldatzen ditugu:

chmod a + x ~ / scripts / update.sh

Script-a pare bat aldiz exekutatzen dugu dena ondo funtzionatzen duela egiaztatzeko, beharrezkoa dena aldatzen dugu (ez du akatsik izan behar, bestela cronek behin eta berriro errorea errepikatuko du). Orain zeregina gure crontab-era gehitzeko.

Gehitu zereginak crontab-era

Crontab-en edizioa crontab -e-rekin exekutatzen dugu, distribuzio batzuetan (Ubuntu adibidez) nahi dugun testu editorea aukeratzeko aukera ematen digu, gainerakoan vi geratzen zaigu. Crontab fitxategiak horrelako zerbait izango du.

# mh dom mon dow erabiltzailearen komandoa

non:

  • m script-a exekutatuko den minutua dagokio, balioa 0-59 bitartekoa da
  • h ordu zehatza, 24 orduko formatua kudeatzen da, balioak 0 eta 23 bitartekoak dira, 0 gauerdiko 12: 00ak izanik.
  • opari hileko eguna aipatzen du, adibidez 15 zehaztu ditzakezu 15 egunetan behin exekutatu nahi baduzu
  • Dow asteko eguna esan nahi du, zenbakizkoa izan daiteke (0tik 7ra, non 0 eta 7 igandea den) edo eguneko lehen 3 hizkiak ingelesez: mon, tue, wed, thu, fri, sat, sun.
  • erabiltzaile komandoa exekutatuko duen erabiltzailea definitzen du, root izan daiteke edo beste erabiltzaile bat script-a exekutatzeko baimenak baditu.
  • komandoa exekutatu beharreko scriptaren agindua edo bide absolutua aipatzen du, adibidez: /home/usuario/scripts/update.sh, script bati deitzen badio exekutagarria izan behar du

Argitzeko cron zereginen adibide batzuk azaltzeko:

15 10 * * * erabiltzailea /home/user/scripts/update.sh

Update.sh script-a egunero 10: 15ean exekutatuko du

15 22 * * * erabiltzailea /home/user/scripts/update.sh

Egunero 10: 15ean eguneratuko du update.sh script-a

00 10 * * 0 root apt-get -y update Erabiltzaile erroa

Eguneratze bat igandero egingo du goizeko 10: 00etan

45 10 * * sun root apt-get -y eguneratzea

Erabiltzaile erroak eguneratze bat egingo du igandero (igandea) goizeko 10: 45ean

30 7 20 11 * user /home/usuario/scripts/update.sh

Azaroaren 20an 7: 30ean erabiltzaileak script-a exekutatuko du

30 7 11 11 sun user /home/usuario/scripts/pastel_con_velitas.sh

Azaroaren 11n, goizeko 7: 30ean eta igandea da, erabiltzaileak bere administratzailea (hau da, ni) ospatuko du

01 * * * * erabiltzailea /home/usuario/scripts/molestorecordatorio.sh

Egunero ordu bakoitzeko minutu oroigarri gogaikarria (EZ da gomendagarria).

Oraindik maneiatu daitezke gama bereziak:

30 17 * * 1,2,3,4,5

5: 30ean egunero astelehenetik ostiralera.

00 12 1,15,28 * *

Eguerdiko 12: 28etan hil bakoitzeko lehenengo, hamabosgarren eta XNUMXan (nominak egiteko aproposa)

Hau nahasgarria bada, crontab maneiatzaileak kate bereziak barruti horiek definitzeko.

@reboot Exekutatu behin, abiaraztean
@yearly urtean behin bakarrik exekutatzen da: 0 0 1 1 *
@urtero @urtero bezala
@hileroko hilean behin exekutatzen da, lehenengo egunean: 0 0 1 * *
@weekly Weekly asteko lehen orduko lehen minutua. 0 0 * * 0 ″.
@eguneroko egunero, 12: 00etan. 0 0 * * *
@gauerdia @egunerokoa bezalakoa
@orduko ordu bakoitzeko lehen minutuan: 0 * * * *

Erabilera oso erraza da.

@hourly user /home/user/scripts/molestorecordatorio.sh @hileroko erabiltzailea /home/user/scripts/backup.sh @ eguneroko root apt-get update && apt-get -y upgrade

Azkenik, baina ez horregatik gutxiago:

Cron lanpostuen kudeaketa

crontab fitxategia

Ordeztu lehendik dagoen crontab fitxategia erabiltzaileak definitutako fitxategi batekin

crontab -e

Editatu erabiltzailearen crontab fitxategia, lerro berri bakoitza crontab ataza berria izango da.

crontab -l

Zerrendatu erabiltzailearen crontab zeregin guztiak

crontab -d

Ezabatu erabiltzailearen crontab

crontab -c dir

Erabiltzailearen crontab direktorioa zehazten du (erabiltzaileak idazteko eta exekutatzeko baimenak izan behar ditu)

crontab -u erabiltzailea

beste erabiltzaile baten crontab-a kudeatzeko aurrizkia, adibideak:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

Tresna hau, beste asko bezala, sakonago eta zehatzago ikus daiteke:

Eskerrik asko Lucain!

Artikuluaren edukia gure printzipioekin bat dator etika editoriala. Akats baten berri emateko egin klik hemen.

48 iruzkin, utzi zurea

Utzi zure iruzkina

Zure helbide elektronikoa ez da argitaratuko.

*

*

  1. Datuen arduraduna: Miguel Ángel Gatón
  2. Datuen xedea: SPAM kontrolatzea, iruzkinen kudeaketa.
  3. Legitimazioa: Zure baimena
  4. Datuen komunikazioa: datuak ez zaizkie hirugarrenei jakinaraziko legezko betebeharrez izan ezik.
  5. Datuak biltegiratzea: Occentus Networks-ek (EB) ostatatutako datu-basea
  6. Eskubideak: Edonoiz zure informazioa mugatu, berreskuratu eta ezabatu dezakezu.

  1.   Alvaro Ortiz leku-markaren irudia esan zuen

    Uf ... pixka bat nahasgarria.

  2.   tonic esan zuen

    * / 30 falta dira (minutuen eremuan) 30 minuturo exekutatzen dena ...

    1.    erm3nda esan zuen

      Hau komentatuko nuen iruzkinak berrikustea erabaki nuen arte 😀
      Aldatzaile hau oso informazio garrantzitsua da eta oso erabilgarria den zerbait da.

      1.    Kika esan zuen

        Hello!
        Oraintxe bertan 45 minuturo konfigurazio bat probatzen ari naiz.

        * / 45 * * * *, eta instrukzioa ordu bakoitzeko 45 minututan eta orduro exekutatzen da. Hau da:

        3: 45ean, gero 4: 00etan, 4: 45ean, 5: 00etan, 5: 45ean, 6: 00etan, 6: 45ean etab.

        Zerbait gaizki daukat? Zer egin dezaket 45 minuturo bakarrik edo behin gutxienez 45 minututan behin behin.

    2.    Kika esan zuen

      Hello!
      Oraintxe bertan 45 minuturo konfigurazio bat probatzen ari naiz.

      * / 45 * * * *, eta instrukzioa ordu bakoitzeko 45 minututan eta orduro exekutatzen da. Hau da:

      3: 45ean, gero 4: 00etan, 4: 45ean, 5: 00etan, 5: 45ean, 6: 00etan, 6: 45ean etab.

      Zerbait gaizki daukat? Zer egin dezaket 45 minuturo bakarrik edo behin gutxienez 45 minututan behin behin.

  3.   Galdutako esan zuen

    Kaixo, informazioa oso erabilgarria da cronek nola funtzionatzen duen argitzeko.
    bytes

  4.   Galdutako esan zuen

    *

  5.   ehiztari esan zuen

    Bikain, eskerrak cron nola funtzionatzen duen argitzeagatik ... jar dezagun esku txiki bat 🙂

  6.   Jacob esan zuen

    Ulertzen dudan lerro hau gaueko 10: 15ean exekutatuko da, zuzendu nazazu oker egonez gero
    Beno, han esaten da goizeko 10: 15ak
    15 22 * * * erabiltzailea /home/user/scripts/update.sh

  7.   Agustin esan zuen

    Kaixo! oso informazio ona.
    Script bat ordu erdiro exekutatzeko, CronTab-en gehitu behar den lerroa honakoa izango litzateke: "30 * * * * root Scrip.sh" Zuzena? Eskerrik asko!

  8.   erabil dezagun linux esan zuen

    Ez. Ondo gogoratzen badut, horretarako / 30 * * * * root Scrip.sh jarri behar duzu.
    Hau da, gehitu / 30 baino lehen.
    Animo! Paul.

  9.   Jonathan esan zuen

    Kaixo zure mezua gustatu zait, oso osoa da baina zerbait galdetu nahi nizun.
    Arazoak ditut komando honekin eta "at" bezalako bat.

    Une jakin batean script bat exekutatu nahi dut eta jartzen dut

    -f /home/mi_user/Desk/script.sh 18:08 helbidean adibidea

    eta gidoia ez da pantailan exekutatzen.

    Kronekin gauza bera gertatzen zait, crontab fitxategia "crontab -e" -rekin editatzen dut.

    amaieran lerro hau gehitzen dut:

    46 19 my_user /home/mi_user/Desk/script.sh

    eta ez du ezer egiten, ez du gidoia erakusten.

    Iradokizunik? Mila esker eta barkatu eragozpenengatik

    1.    erabil dezagun linux esan zuen

      Terminala agertzeko, baliteke terminala exekutatzea eta script-a parametro gisa pasatzea.

      Adibidez:

      lxterminal -e "my_user /home/my_user/Desk/script.sh"

      Erabiliko duzun parametroa alda daiteke erabiltzen duzun terminal emuladorearen arabera.

      Funtzionatzea espero dut.

      Besarkada! Paul.

  10.   patretkak esan zuen

    Ekarpena eskertzen da.

    10 puntu !!

    salud 2!!

  11.   Rodolfo esan zuen

    Mila esker, asko lagundu ninduen gauza batzuk argitzen, guztira eskerrik asko, xehetasun gehiagorengatik edo galderengatik GIZAKI ORRIALDERA joango naiz, errepikatutako agurrak.

  12.   jahir esan zuen

    Osabak mila esker, adibideak irakurtzen eta probatzen egon naiz. mila esker ... oso ulergarria da. Animo

  13.   Geovanni esan zuen

    Ubuntu Server 12.04.2 LTS erabili nuen eta erabiltzailearen lanen zerrenda ezabatzeko daukadan crontab bertsioa erabiltzen da, crontab -r (eta -l, eskuliburu honek dioen bezala). Ziur bertsioen arabera egiten dela.

    Bestalde, behin crontab bakarrik exekutatu nuen eta honek nire exekuzio fitxategia sortzen utzi zidan, baina ez zen exekutatzen ari zena. Exekutatzen dena / etc / crontab-en dagoena da. agian norbaitek erabiliko du iruzkina.

    PS (bilatu eta whereis crontab-ekin bilatzen dut baina aipatutako helbidea eta enkriptatutako beste fitxategi bat besterik ez du itzuli, beraz, exekutatu zena / etc / crontab-en bazen, baina crontab -e komandoa exekutatzean nirea agertu zen definitu nituen lan guztiekin) non gorde zen fitxategi hau '???? Agurrak. Beti erroarekin saioa hasten dut.

  14.   Sebastian esan zuen

    Bikaina, oso erabilgarria !!!

  15.   mmm esan zuen

    Kaixo, hau egin nahi nuke ... 15 10 * * * root ifdown eth0 »

    hau da, une jakin batean sareko txartela itzalita dagoela ...... bueno, crontabean sartu dut eta ez du funtzionatu ... ... zer gertatzen da?

    Agurrak eta eskerrak

  16.   Miguel esan zuen

    "Mon" definitzea galdu duzu "Gehitu zereginak crontab" izenburuaren ondoren.

    Artikulua polita da oraindik, oso erabilgarria da cron.

  17.   Oscar esan zuen

    Zeinen polita izan zen mezu on hori, galdetu
    Zereginak gauzatzeak utzitako erregistroen jarraipena egin nahi badut, non ikus dezaket?

    fitxategiaren iraganean egindako ekintzen historia ikusi nahi dut eta nork aldatu duen eta data ikusi nahi dut

    esker

  18.   oscar esan zuen

    Honen aldaketen historia egiaztatu nahi dut

    nola egin dezaket

    esker

  19.   Andres Ledo esan zuen

    Good goizean,

    Ubuntu scriptean akats bat egin duzula uste dut apt-get -y upgrade ordez ap-get -y upgrade jarri duzula. (T bat utzi duzu).

    Agur bero bat.

    1.    erabil dezagun linux esan zuen

      Hala da. Eskerrik asko!
      Besarkada! Paul

  20.   Gabriel esan zuen

    Cron fitxategi bat nola sortu jakin nahi dut exekutatzen den bakoitzean, direktorioa eta abar zehaztu ahal izateko.

  21.   Valentine esan zuen

    Eskerrik asko operazioa eta cron-en oinarrizko komandoak argitzeagatik, orain zeure burua pixka bat entretenitzeko.

  22.   Sander esan zuen

    Gnu / Linux-ekin erlazionatutako edozein gairi buruzko informazioa bilatzen dudanean azkenean bueltaka ibiltzen naiz beti kasuen% 90ean komunitate bikaineko tutorialik onena topatuz, hemendik aurrera hemendik eta beste nonbaitetik hasiko naizela uste dut. .

    dagokionez

    1.    erabil dezagun linux esan zuen

      Eskerrik asko Sander! Besarkada bat! Paul.

  23.   dario esan zuen

    dom = hileko eguna
    dow = asteko eguna
    errazagoa da elkartuz gero

  24.   Pascual esan zuen

    Mila esker, oso osoa eta ondo azalduta.

  25.   Maxillia esan zuen

    Nire sistema eragileetako irakasleak eman zigun gauza bera da, ez dut ezer aldatzen, orain ikusten dut zergatik den hain txarra klasea.-.

  26.   Marcelo esan zuen

    Estimatutako,

    Kontsulta, zeregin baten iraupena muga al daiteke?
    Adibidez, 5 minuturo behin errepikatzen den zeregina daukat, zeregin hori oraindik aktiboa bada errepikatzean, hil eta berriro exekutatu.

    Eskerrik asko,
    Marcelo.-

    1.    erabil dezagun linux esan zuen

      Kaixo, Marcelo!

      Nire ustez, hobe litzateke galdera hau planteatzen baduzu deitutako gure galdera eta erantzun zerbitzuan Galdetu FromLinux-i komunitate osoak zure arazoarekin lagun zaitzan.

      Besarkada bat, Pablo.

  27.   aj esan zuen

    mezu ona.
    Zein da terminal bakoitzeko agindua crontab-i zereginak gehitzeko (crontab-ean sartu gabe eta 'crontab -e' eskuz gehitu edo crontab beste crontab batekin 'crontab fitxategia' ordezkatuz).
    Ideia kanpoko script bat sortzea da zereginak crontab-era gehitzeko
    gracias

    1.    david esan zuen

      iruditzen zait "oihartzuna" erabil dezakezula gehitu nahi duzuna "| cat >> 'cronotab bidea (/ etc / cronotab)' «

  28.   Rafael Vera esan zuen

    Nola funtzionatuko luke adierazpen batek 3 egunetik behin zehazki

  29.   José Antonio esan zuen

    Hello.

    Arazo bat daukat cron lan bat exekutatzean.

    Cronta -e-rekin zeregin hau burutzen dut:

    01 * * * * root /home/user/script/mfile.sh

    baina zeregina ez dago eginda. Myfile.sh-k exekuzio baimena duela egiaztatu dut eta exekutatzen duen erabiltzailea root dela.

    Zeregin bera egiten dut / etc / crontab-en eta zerbitzua berrabiarazi ondoren, niretzat ere ez da funtzionatzen.
    Myfile.sh-ren edukia DB bat eguneratzen duen komandoa da eta kontsolan exekutatzen badut funtzionatzen du.
    arazorik izan daitekeen ideiarik al duzu?

    1.    fredd esan zuen

      Litekeena da datu-basearen erabiltzaileak baimen guztiak ez izatea eta lehenik inguruneko aldagaiak esportatu beharko dituzu zure datu-basetik.
      Adibidez, db2-n lerro hau scriptaren hasierara joango litzateke
      . / home / db2inst1 / sqllib / db2profile

      Beste kausa bat izan daiteke gidoiak datu-basearekin konexioa behar izatea, gidoiaren barruan konexioa egitea

  30.   LA3 esan zuen

    Ez nekien biribilka berrabiarazi behar nuenik, honekin borrokan aritu nintzen denbora batez

  31.   Kenya esan zuen

    Zeregina hilaren bukaera guztietan exekutatzen dela adierazten jakingo dute, adierazitako orduan .. xehetasuna da ezin dudala lortu nola jakin hilabete bakoitzeko azken eguna behar dela .. ?? Banan-banan idatzi behar izan nituen, baina otsailaren amaiera iritsi zenean bizikeria dela eta zaila da niretzat ..

  32.   Jesus esan zuen

    egun ona!!

    Nola gelditu crontab-en exekutatzen ari den prozesua?

  33.   Jesus esan zuen

    prozesua * …………

  34.   Julianna esan zuen

    Lagunduko zenidake? minha egilearen gidoia ez du funtzionatzen eta horrek ez du funtzionatzen crontab! Baita baimen guztiak, exekutatu dezakeen kroniko edo erabiltzaile zehatz pribaturik ez da ezer gertatzen! Lagundu ahal didazun jakin nahi nuke, beste gauza batzuek ez dute funtzionatzen cronik gabe! Vlws

  35.   Anthox esan zuen

    Nola jarriko zenuke zeregin bat hileko azken egun guztietan exekutatzeko (egunak: 31-30-28)?

  36.   tfertxo esan zuen

    Dagoeneko dakizuenez, su komandoa kontsola bateko erabiltzailea aldatzeko erabiltzen da. Su komandoa honela erabiltzen badut: "zure erabiltzailea" aldatu erabiltzailea baina "erabiltzailea" ezarpen egokirik gabe, su gisa honela exekutatzen badut: "su - erabiltzailea" aldatu erabiltzailea erabiltzailearen ezarpenak kargatuz. Cron-ekin erabiltzailea adierazten dut, baina nola kargatu erabiltzaile honen ezarpenak?

  37.   Rob esan zuen

    Eta gelditu nahi badut?

  38.   erregi esan zuen

    Kaixo,
    Ez dakit zer egiten ari naizen gaizki, baina urratsak jarraitzen ditut eta ez da ezer exekutatzen. Saiatu naiz:
    59 * * * * / usr / bin / gedit
    * * * * * / usr / bin / gedit
    * * * * * root / usr / bin / gedit
    * * * * * usr / bin / test.sh
    * * * * * root usr / bin / test.sh

    eta ezer ere ez. Ez du ezer exekutatzen. Berrabiarazi dut eta dena.

  39.   Ferqos esan zuen

    thank you very much