„Cron Vs Anacron“: kaip planuoti darbus naudojant „Anacron“ sistemoje „Linux“


Šiame straipsnyje mes paaiškinsime „cron“ ir „anacron“, taip pat parodysime, kaip nustatyti „anacron“ sistemoje „Linux“. Taip pat aptarsime šių dviejų komunalinių paslaugų palyginimą.

Norėdami suplanuoti užduotį nurodytu ar vėlesniu laiku, galite naudoti komandas „at“ arba „batch“ ir nustatyti komandas, kad jos būtų vykdomos pakartotinai, galite naudoti „cron“ ir „anacron“ įrenginius.

„Cron“ - tai deimonas, naudojamas suplanuotoms užduotims, tokioms kaip sistemos atsarginės kopijos, atnaujinimai ir daug daugiau, vykdyti. Jis tinka vykdyti suplanuotas užduotis mašinose, kurios nuolat veiks 24x7, pvz., Serveriuose.

Komandos/užduotys užrašomos į „cron“ užduotis, kurios suplanuotos „crontab“ failuose. Numatytasis sistemos „crontab“ failas yra/etc/crontab, tačiau kiekvienas vartotojas taip pat gali sukurti savo „crontab“ failą, kuris gali paleisti komandas vartotojo nustatytu laiku.

Norėdami sukurti asmeninį „crontab“ failą, tiesiog įveskite:

$ crontab -e

Kaip nustatyti „Anacron“ sistemoje „Linux“

„Anacron“ naudojamas komandoms periodiškai vykdyti dažniu, apibrėžtu dienomis. Jis veikia šiek tiek kitaip nei cron; daro prielaidą, kad mašina nebus nuolat įjungta.

Tai tikslinga vykdyti kasdienius, savaitinius ir mėnesinius suplanuotus darbus, paprastai atliekamus „Cron“, mašinose, kurios neveiks 24–7, pvz., Nešiojamųjų ir stalinių kompiuterių.

Darant prielaidą, kad turite suplanuotą užduotį (pvz., Atsarginį scenarijų), kuri bus vykdoma naudojant „cron“ kiekvieną vidurnaktį, galbūt miegant, ir tuo metu jūsų darbalaukis/nešiojamas kompiuteris bus išjungtas. Jūsų atsarginis scenarijus nebus vykdomas.

Tačiau jei naudojate „anacron“, galite būti tikri, kad kitą kartą vėl įjungus darbalaukį/nešiojamąjį kompiuterį, atsarginės kopijos scenarijus bus vykdomas.

Kaip „Anacron“ veikia „Linux“

„anacron“ užduotys yra nurodytos aplanke/etc/anacrontab, o užduotis galima suplanuoti naudojant žemiau pateiktą formatą (komentarai anacrontab faile turi prasidėti #).

period   delay   job-identifier   command

Iš aukščiau pateikto formato:

  • laikotarpis - tai darbo atlikimo dažnis, nurodytas dienomis arba kaip @daily, @weekly arba @monthone kartą per dieną, savaitę ar mėnesį. Taip pat galite naudoti skaičius: 1 - kasdien, 7 - kas savaitę, 30 - kas mėnesį ir N - dienų skaičių.
  • vėlavimas - tai minučių skaičius, kurį reikia palaukti prieš atliekant darbą.
  • job-id - tai skiriamasis darbo pavadinimas, įrašytas žurnalo failuose.

Norėdami peržiūrėti failų pavyzdžius, įveskite:

$ 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

  • komanda - tai vykdoma komanda arba apvalkalo scenarijus.

  • „Anacron“ patikrins, ar darbas buvo atliktas per nurodytą laikotarpį laikotarpio lauke. Jei ne, jis įvykdo komandą, nurodytą komandų lauke, palaukęs vėlavimo lauke nurodytą minučių skaičių.
  • Atlikus užduotį, ji įrašo datą laiko žymos faile/var/spool/anacron kataloge su pavadinimu, nurodytu lauke job-id (laiko žymės failo pavadinimas).

Dabar pažvelkime į pavyzdį. Tai kasdien vykdys scenarijų /home/aaronkilik/bin/backup.sh:

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

Jei mašina išjungta, kai tikimasi paleisti „backup.sh“ užduotį, „Anacron“ ją paleis praėjus 10 minučių po mašinos įjungimo, nelaukiant dar 7 dienų.

Anacrontab faile yra du svarbūs kintamieji, kuriuos turėtumėte suprasti:

  • START_HOURS_RANGE - tai nustato laiko intervalą, per kurį darbai bus pradėti (t. y. atlikti darbus tik kitomis valandomis).
  • RANDOM_DELAY - tai apibrėžia maksimalų atsitiktinį vėlavimą, pridėtą prie vartotojo nustatyto uždelsimo (pagal numatytuosius nustatymus tai yra 45).

Tai gali atrodyti jūsų „anacrontab“ failas.

# /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                                                                      

Toliau pateikiamas „cron“ ir „anacron“ palyginimas, kuris padės suprasti, kada naudoti bet kurį iš jų.

Pagrindinis skirtumas tarp „cron“ ir „anacron“ yra tas, kad „cron“ efektyviai veikia mašinose, kurios veiks nuolat, o „anacron“ - mašinoms, kurios bus išjungtos per dieną ar savaitę.

Jei žinote kokį nors kitą būdą, pasidalykite su mumis naudodami toliau pateiktą komentaro formą.