Cron & crontab, selitetty

Lucaine hän julkaisi jokin aika sitten erinomainen opetusohjelma cronista ja crontabista jonka mielestäni kannattaa jakaa. Cron on eräänlainen vastaava Windowsin ajoitetuille tehtäville, vain, että se käsitellään terminaalista. Ne, jotka haluavat visuaalisen käyttöliittymän saman tavoitteen saavuttamiseksi, voivat nähdä tämän toinen kohde.

Mikä on cron?

Nimi cron tulee kreikkalaisista chronosista, mikä tarkoittaa "aikaa". Unix-käyttöjärjestelmässä cron on säännöllinen taustaprosessien hallinta (daemon), joka suorittaa prosesseja tai komentosarjoja säännöllisin väliajoin (esimerkiksi joka minuutti, päivä, viikko tai kuukausi). Suoritettavat prosessit ja niiden suorittamisen ajankohta määritetään crontab-tiedostossa.

cómo teokset

Cron-daemon alkaa /etc/rc.d/ o /etc/init.d jakelusta riippuen. Cron juoksee taustalla, tarkistaa crontab-tehtävätaulukon joka minuutti / Etc / crontab vuonna / var / kela / cron etsimään suoritettavia tehtäviä. Käyttäjänä voimme lisätä komentoja tai komentosarjoja tehtävien kanssa croniin automatisoimaan joitain prosesseja. Tästä on hyötyä esimerkiksi järjestelmän päivityksen tai hyvän varmuuskopiointijärjestelmän automatisointiin.

Aiheeseen liittyvä artikkeli:
Opetusohjelma: Asenna .tar.gz- ja .tar.bz2-paketit

Mikä on Crontab?

Crontab on yksinkertainen tekstitiedosto, joka tallentaa luettelon suoritettavista komennoista käyttäjän määrittelemänä ajankohtana. Crontab tarkistaa päivämäärän ja kellonajan, jolloin komentosarja tai komento on suoritettava, suoritusoikeudet ja se tehdään taustalla. Jokaisella käyttäjällä voi olla oma crontab-tiedosto, itse asiassa / Etc / crontab sen oletetaan olevan pääkäyttäjän crontab-tiedosto, kun tavalliset käyttäjät (ja jopa root) haluavat luoda oman crontab-tiedoston, käytämme crontab-komentoa.

Crontab on helpoin tapa hallita cron-tehtäviä monen käyttäjän järjestelmissä joko yksinkertaisena järjestelmän käyttäjänä tai pääkäyttäjänä.

Crontabin käyttö

Aloitamme yksinkertaisella esimerkillä.

Aiomme automatisoida järjestelmän päivityksen poistamaan ärsyttävät "Minun täytyy aina päivittää enkä pidä siitä!"

miten
Aiheeseen liittyvä artikkeli:
Komennot järjestelmän tuntemiseksi (laitteiston ja joidenkin ohjelmistokokoonpanojen tunnistaminen)

Ensinnäkin teemme käsikirjoituksen. Cron kutsuu tätä komentosarjaa ja sisältää kaikki haluamamme ohjeet, joten se on testattava useissa tapauksissa ja monin tavoin ennen sen sisällyttämistä croniin, yksinkertaiseen päivityskomentoon, kuten tämä:

#! / bin / bash #script-päivitysesimerkki #valitse jakelusi # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Poista # jakeluriviltäsi. Jos se on Ubuntu / Debian, se alkaa apt-get.

Tallennamme komentosarjan nimellä update.sh (esim. Komentosarjat hakemisto kotisi). Muutamme mainitun komentosarjan suoritusoikeudet seuraavilla tavoilla:

chmod a + x ~ / scripts / update.sh

Suoritamme komentosarjan muutaman kerran varmistaaksemme, että kaikki toimii sujuvasti, muokkaamme tarvittavaa (se ei saa sisältää virheitä, muuten cron toistaa virheen vain uudestaan ​​ja uudestaan). Nyt voit lisätä tehtävän crontabiin.

Lisää tehtäviä crontabiin

Suoritamme crontab-version crontab -e: llä, joissakin distroissa (kuten Ubuntu) se antaa meille mahdollisuuden valita haluamasi tekstieditori, loput jäävät vi. Crontab-tiedosto näyttää tältä.

# mh dom mon dow -komento

missä:

  • m vastaa komentosarjan suoritushetkeä, arvo vaihtelee 0: sta 59: een
  • h tarkka aika, 24 tunnin muoto käsitellään, arvot vaihtelevat 0: sta 23: een, 0 on 12:00 keskiyöllä.
  • lahja viittaa kuukauden päivään, esimerkiksi voit määrittää 15, jos haluat suorittaa 15 päivän välein
  • Dow tarkoittaa viikonpäivää, se voi olla numeerinen (0–7, missä 0 ja 7 on sunnuntai) tai päivän kolme ensimmäistä kirjainta englanniksi: ma, ti, ke, to, pe, la, su.
  • lähettämä määrittää käyttäjän, joka suorittaa komennon, se voi olla pääkäyttäjä tai toinen käyttäjä, kunhan heillä on käyttöoikeudet komentosarjan suorittamiseen.
  • komento viittaa komentoon tai komentosarjan absoluuttiseen polkuun suoritettavaksi, esimerkki: /home/usuario/scripts/update.sh, jos se kutsuu komentosarjaa, sen on oltava suoritettava

Muutama esimerkki selitetyistä cron-tehtävistä on selkeä:

15 10 * * * käyttäjä /home/usuario/scripts/update.sh

Se suorittaa päivityksen.sh komentosarjan joka päivä klo 10

15 22 * * * käyttäjä /home/usuario/scripts/update.sh

Se suorittaa päivityksen.sh komentosarjan joka päivä kello 10

00 10 * * 0 root apt-get -y -päivitys Root-käyttäjä

Se suorittaa päivityksen joka sunnuntai klo 10

45 10 * * sun root apt-get -y -päivitys

Root-käyttäjä suorittaa päivityksen joka sunnuntai (su) klo 10

30 7 20 11 * käyttäjä /home/usuario/scripts/update.sh

Käyttäjä suorittaa komentosarjan 20. marraskuuta kello 7

30 7 11 11 auringon käyttäjä /home/usuario/scripts/pastel_con_velitas.sh

11. marraskuuta kello 7 ja sunnuntaina käyttäjä juhlii sysadminiaan (eli minua)

01 * * * * käyttäjä /home/usuario/scripts/molestorecordatorio.sh

Ärsyttävä muistutus joka minuutti joka tunti joka päivä (EI suositella).

Niitä voidaan silti käsitellä erikoisalueet:

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

Klo 5 iltapäivällä joka päivä maanantaista perjantaihin.

00 12 1,15,28 *

Klo 12 jokaisen kuukauden ensimmäisenä, viidentenätoista ja 28. päivänä (ihanteellinen palkanlaskentaan)

Jos tämä on hämmentävää, käsittele kahvat erityiset merkkijonot näiden alueiden määrittelemiseksi.

@reboot Suorita kerran, käynnistyksen yhteydessä
@vuosi kulkee vain kerran vuodessa: 0 0 1 1 *
@vuotta sama kuin @vuotta
@kuukausittain kerran kuukaudessa, ensimmäinen päivä: 0 0 1 * *
@ viikoittain viikoittain viikon ensimmäisen tunnin ensimmäinen minuutti. 0 0 * * 0 ″.
@ päivittäin päivittäin, klo 12 00 0 * * *
@ keskiyö sama kuin @ päivittäin
@ tunti tunnin välein: 0 * * * *

Sen käyttö on hyvin yksinkertaista.

@ tunti käyttäjä /home/user/scripts/molestorecordatorio.sh @kuukausittainen käyttäjä /home/user/scripts/backup.sh @ päivittäin root apt-get update && apt-get -y upgrade

Viimeinen mutta ei vähäisin:

Cronin työnhallinta

crontab-tiedosto

Korvaa olemassa oleva crontab-tiedosto käyttäjän määrittämällä tiedostolla

crontab -e

Muokkaa käyttäjän crontab-tiedostoa, jokainen uusi rivi on uusi crontab-tehtävä.

crontab -l

Luettele kaikki käyttäjän crontab-tehtävät

crontab -d

Poista käyttäjän crontab

crontab -c ohj

Määrittää käyttäjän crontab-hakemiston (sillä on oltava käyttäjän kirjoitus- ja suoritusoikeudet)

crontab -u-käyttäjä

etuliite toisen käyttäjän sivunäkymän käsittelemiseen, esimerkkejä:

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

Tämä työkalu, kuten monet muutkin, voidaan nähdä syvällisemmin ja yksityiskohtaisemmin:

Kiitos Lucain!