Cron vs Anacron: Kako zakazati poslove koristeći Anacron na Linuxu


U ovom članku ćemo objasniti cron i anacron i pokazati vam kako da postavite anacron na Linux. Takođe ćemo pokriti poređenje ova dva uslužna programa.

Za planiranje zadatka u dato ili kasnije vrijeme, možete koristiti naredbe 'at' ili 'batch', a za postavljanje komandi za ponavljanje, možete koristiti cron i anacron objekti.

Cron – je demon koji se koristi za pokretanje planiranih zadataka kao što su sigurnosne kopije sistema, ažuriranja i još mnogo toga. Pogodan je za izvršavanje zakazanih zadataka na mašinama koje će raditi neprekidno 24x7, kao što su serveri.

Naredbe/zadaci su skriptirani u cron poslove koji su zakazani u crontab datotekama. Podrazumevani sistemski crontab fajl je /etc/crontab, ali svaki korisnik može kreirati i sopstveni crontab fajl koji može da pokreće komande u vremenima koje korisnik definiše.

Da kreirate ličnu crontab datoteku, jednostavno upišite sljedeće:

crontab -e

Kako postaviti Anacron u Linuxu

Anacron se koristi za periodično pokretanje komandi sa frekvencijom definisanom u danima. Radi malo drugačije od crona; pretpostavlja da mašina neće biti stalno uključena.

Prikladan je za izvođenje dnevnih, sedmičnih i mjesečnih zakazanih poslova koje obično izvodi cron, na mašinama koje neće raditi 24-7, kao što su laptopovi i desktop računari.

Pod pretpostavkom da imate zakazani zadatak (kao što je skripta za sigurnosnu kopiju) koji će se pokrenuti koristeći cron svake ponoći, moguće kada spavate, a vaš desktop/laptop je do tada isključen. Vaša rezervna skripta neće biti izvršena.

Međutim, ako koristite anacron, možete biti sigurni da će sljedeći put kada ponovo uključite desktop/laptop, skripta za sigurnosnu kopiju biti izvršena.

Kako Anacron radi u Linuxu

anacron poslovi su navedeni u /etc/anacrontab i poslovi se mogu rasporediti koristeći format ispod (komentari unutar datoteke anacrontab moraju početi sa #).

period   delay   job-identifier   command

Iz gornjeg formata:

  • period – ovo je učestalost izvršenja posla navedena u danima ili kao @dnevno, @tjedno ili @mjesečno jednom dnevno, sedmično ili mjesečno. Možete koristiti i brojeve: 1 – dnevno, 7 – sedmično, 30 – mjesečno i N – broj dana.
  • kašnjenje – to je broj minuta za čekanje prije izvršavanja posla.
  • job-id – to je prepoznatljivo ime za posao zapisano u log fajlovima.

Da vidite primjere fajlova, otkucajte:

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 – to je naredba ili shell skripta koja se izvršava.
Evo šta se praktično dešava:
  • Anacron će provjeriti da li je posao izvršen unutar navedenog perioda u polju za period. Ako ne, izvršava naredbu navedenu u polju za naredbu nakon što čeka broj minuta naveden u polju odgode.
  • Nakon što se posao izvrši, on bilježi datum u datoteci vremenske oznake u direktoriju /var/spool/anacron sa imenom navedenim u polju ID-a posla (ime datoteke vremenske oznake).

Pogledajmo sada primjer. Ovo će pokretati skriptu /home/aaronkilik/bin/backup.sh svaki dan:

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

Ako je mašina isključena kada se očekuje pokretanje posla backup.sh, anacron će ga pokrenuti 10 minuta nakon što se mašina uključi bez čekanja narednih 7 dana.

Postoje dvije važne varijable u datoteci anacrontab koje biste trebali razumjeti:

  • START_HOURS_RANGE – ovo postavlja vremenski raspon u kojem će poslovi biti započeti (tj. izvršavati poslove samo u narednim satima).
  • RANDOM_DELAY – ovo definira maksimalno nasumično kašnjenje dodano korisničkom definiranom kašnjenju zadatka (podrazumevano je 45).

Ovako bi vaša datoteka anacrontab mogla izgledati.

/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                                                                      

Sljedeće je poređenje cron i anacron da biste lakše razumjeli kada koristiti bilo koji od njih.

It’s a daemon

To nije demon

Appropriate for server machines

Pogodan za desktop/laptop mašine

Enables you to run scheduled jobs every minute

Omogućuje vam samo da izvršavate planirane poslove na dnevnoj bazi

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

Ako je mašina isključena kada je zakazan posao zakazan, izvršit će planirani posao kada se uređaj sljedeći put uključi

Can be used by both normal users and root

Može se koristiti samo od strane root osim ako nije drugačije (omogućeno za normalne korisnike sa određenim konfiguracijama)

Glavna razlika između cron i anacron je u tome što cron radi efikasno na mašinama koje će raditi neprekidno dok je anacron predviđen za mašine koje će se isključiti za dan ili nedelju.

Ako znate bilo koji drugi način, podijelite s nama koristeći formu za komentare ispod.