Cron vs Anacron: Työpaikkojen ajoittaminen Anacronilla Linuxissa


Tässä artikkelissa selitämme cron ja anacron ja näytämme myös, kuinka anacron määritetään Linuxissa. Käsittelemme myös näiden kahden apuohjelman vertailun.

Jos haluat ajoittaa tehtävän tiettyyn tai myöhempään ajankohtaan, voit käyttää at- tai batch-komentoja ja määrittää komennot toimimaan toistuvasti käyttämällä cron- ja anacron-tilat.

Cron – on daemon, jota käytetään suorittamaan ajoitettuja tehtäviä, kuten järjestelmän varmuuskopioita, päivityksiä ja monia muita. Se sopii ajoitettujen tehtävien suorittamiseen koneissa, jotka toimivat jatkuvasti 24x7, kuten palvelimilla.

Komennot/tehtävät skriptoidaan cron-töiksi, jotka ajoitetaan crontab-tiedostoihin. Järjestelmän oletusarvoinen crontab-tiedosto on /etc/crontab, mutta jokainen käyttäjä voi myös luoda oman crontab-tiedoston, joka voi käynnistää komentoja käyttäjän määritteleminä aikoina.

Luo henkilökohtainen crontab-tiedosto kirjoittamalla seuraava:

crontab -e

Anacronin asentaminen Linuxissa

Anacronia käytetään komentojen suorittamiseen ajoittain päivinä määritetyllä tiheydellä. Se toimii hieman eri tavalla kuin cron; olettaa, että kone ei ole päällä koko ajan.

Se soveltuu päivittäisten, viikoittaisten ja kuukausittaisten ajoitettujen töiden suorittamiseen, joita tavallisesti suorittaa cron, koneissa, jotka eivät toimi 24–7, kuten kannettavat tietokoneet ja pöytäkoneet.

Olettaen, että sinulla on ajoitettu tehtävä (kuten varmuuskopioskripti), joka suoritetaan cronilla joka keskiyö, mahdollisesti nukkuessasi, ja työpöytäsi/kannettavasi on sammutettuna siihen mennessä. Varmuuskopiokomentosarjaasi ei suoriteta.

Jos kuitenkin käytät anacronia, voit olla varma, että kun seuraavan kerran käynnistät työpöydän tai kannettavan tietokoneen uudelleen, varmuuskopiointi suoritetaan.

Kuinka Anacron toimii Linuxissa

anacron-työt on lueteltu osoitteessa /etc/anacrontab, ja työt voidaan ajoittaa alla olevassa muodossa (anacrontab-tiedoston sisällä olevien kommenttien tulee alkaa #).

period   delay   job-identifier   command

Yllä olevasta formaatista:

  • kausi – tämä on töiden suoritustiheys päivinä tai @daily, @weekly tai @monthly kerran päivässä, viikossa tai kuukaudessa. Voit myös käyttää numeroita: 1 – päivittäin, 7 – viikoittain, 30 – kuukausittain ja N – päivien lukumäärää.
  • viive – se on minuuttien määrä, joka on odotettava ennen työn suorittamista.
  • job-id – se on lokitiedostoihin kirjoitetun työn erottuva nimi.

Voit tarkastella esimerkkitiedostoja kirjoittamalla:

ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • komento – se on suoritettava komento tai komentosarja.
Käytännössä tapahtuu näin:
  • Anacron tarkistaa, onko työ suoritettu määrätyn ajan kuluessa jaksokentässä. Jos ei, se suorittaa komentokentässä määritetyn komennon odotettuaan viivekentässä määritetyn minuuttimäärän.
  • Kun työ on suoritettu, se tallentaa päivämäärän aikaleimatiedostoon /var/spool/anacron-hakemistoon työn tunnus (aikaleimatiedoston nimi) -kentässä määritetyllä nimellä.

Katsotaanpa nyt esimerkkiä. Tämä suorittaa /home/aronkilik/bin/backup.sh-komentosarjan joka päivä:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Jos kone on pois päältä, kun backup.sh-työn odotetaan suoritettavan, anacron suorittaa sen 10 minuuttia koneen käynnistämisen jälkeen ilman, että sinun tarvitsee odottaa 7 päivää.

Anacrontab-tiedostossa on kaksi tärkeää muuttujaa, jotka sinun tulee ymmärtää:

  • START_HOURS_RANGE – tämä asettaa ajanjakson, jonka kuluessa työt aloitetaan (eli suorita töitä vain seuraavien tuntien aikana).
  • RANDOM_DELAY – tämä määrittää suurimman satunnaisen viiveen, joka lisätään työn käyttäjän määrittelemään viiveeseen (oletuksena se on 45).

Tältä anakrontab-tiedostosi saattaa näyttää.

/etc/anacrontab: configuration file for anacron

See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

Seuraavassa on cron- ja anacron-vertailu, joka auttaa sinua ymmärtämään, milloin jompaakumpaa niistä kannattaa käyttää.

It’s a daemon

Se ei ole demoni

Appropriate for server machines

Sopii pöytäkoneille/kannettaville koneille

Enables you to run scheduled jobs every minute

Mahdollistaa vain ajoitettujen töiden suorittamisen päivittäin

Doesn’t executed a scheduled job when the machine if off

Jos kone on pois päältä ajoitetun työn määräaikana, se suorittaa ajoitetun työn, kun koneeseen kytketään virta seuraavan kerran

Can be used by both normal users and root

Vain pääkäyttäjä voi käyttää, ellei toisin (käytössä normaaleille käyttäjille tietyillä asetuksilla)

Suurin ero cronin ja anacron välillä on se, että cron toimii tehokkaasti koneissa, jotka toimivat jatkuvasti, kun anacron on tarkoitettu koneille, jotka sammutetaan päivän tai viikon kuluttua.

Jos tiedät jonkin muun tavan, jaa meille alla olevalla kommenttilomakkeella.