Cron protiv Anacrona: Kako zakazati poslove pomoću Anacrona na Linuxu


U ovom ćemo članku objasniti cron i anacron te vam također pokazati kako postaviti anacron na Linuxu. Također ćemo pokriti usporedbu ova dva pomoćna programa.

Za planiranje zadatka u zadano ili kasnije vrijeme, možete koristiti naredbe 'at' ili 'batch', a za postavljanje naredbi da se ponavljaju, možete koristiti < objekticron i anacron.

Cron – je demon koji se koristi za pokretanje zakazanih zadataka kao što su sigurnosne kopije sustava, ažuriranja i još mnogo toga. Pogodan je za izvršavanje zakazanih zadataka na strojevima koji će raditi neprekidno 24X7 kao što su poslužitelji.

Naredbe/zadaci su skriptirani u cron poslove koji su zakazani u crontab datotekama. Zadana crontab datoteka sustava je /etc/crontab, ali svaki korisnik također može stvoriti vlastitu crontab datoteku koja može pokretati naredbe u vrijeme koje korisnik definira.

Za izradu osobne crontab datoteke jednostavno upišite sljedeće:

crontab -e

Kako postaviti Anacron u Linuxu

Anacron se koristi za periodično pokretanje naredbi s učestalošću definiranom u danima. Djeluje malo drugačije od crona; pretpostavlja da stroj neće biti uključen cijelo vrijeme.

Prikladan je za pokretanje dnevnih, tjednih i mjesečnih zakazanih poslova koje obično izvodi cron, na strojevima koji neće raditi 24 sata dnevno, 7 dana u tjednu, poput prijenosnih i stolnih računala.

Pod pretpostavkom da imate planirani zadatak (kao što je skripta sigurnosne kopije) koju treba pokrenuti pomoću cron-a svake ponoći, vjerojatno kada spavate, a vaše stolno/prijenosno računalo je do tog vremena isključeno. Vaša sigurnosna skripta neće se izvršiti.

Međutim, ako koristite anacron, možete biti sigurni da će sljedeći put kada ponovno uključite stolno/prijenosno računalo, skripta sigurnosne kopije biti izvršena.

Kako Anacron radi u Linuxu

anacron poslovi navedeni su u /etc/anacrontab i poslovi se mogu planirati pomoću donjeg formata (komentari unutar anacrontab datoteke moraju započeti s #).

period   delay   job-identifier   command

Iz gornjeg formata:

  • razdoblje – ovo je učestalost izvršavanja posla navedena u danima ili kao @dnevno, @tjedno ili @mjesečno za jedan dan, tjedan ili mjesec. Možete koristiti i brojeve: 1 – dnevno, 7 – tjedno, 30 – mjesečno i N – broj dana.
  • odgoda – to je broj minuta čekanja prije izvršenja posla.
  • job-id – to je prepoznatljiv naziv za posao zapisan u datotekama dnevnika.

Za prikaz primjera datoteka upišite:

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
  • naredba – to je naredba ili skripta ljuske koju treba izvršiti.
Evo što se praktično događa:
  • Anacron će provjeriti je li posao izvršen unutar navedenog razdoblja u polju razdoblja. Ako nije, izvršava naredbu navedenu u polju naredbe nakon čekanja broja minuta navedenog u polju odgode.
  • Nakon što se posao izvrši, bilježi datum u datoteku vremenske oznake u direktoriju /var/spool/anacron s imenom navedenim u polju ID posla (naziv datoteke vremenske oznake).

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

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

Ako je stroj isključen kada se očekuje pokretanje posla backup.sh, anacron će ga pokrenuti 10 minuta nakon uključivanja stroja bez čekanja dodatnih 7 dana.

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

  • START_HOURS_RANGE – ovo postavlja vremenski raspon u kojem će se poslovi pokrenuti (tj. izvršiti poslove samo tijekom sljedećih sati).
  • RANDOM_DELAY – ovo definira maksimalno nasumično kašnjenje koje se dodaje korisnički definiranom kašnjenju posla (prema zadanim postavkama 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                                                                      

Slijedi usporedba crona i anacrona kako biste lakše razumjeli kada koristiti bilo koji od njih.

It’s a daemon

To nije demon

Appropriate for server machines

Prikladno za stolna/prijenosna računala

Enables you to run scheduled jobs every minute

Omogućuje vam samo izvršavanje zakazanih poslova na dnevnoj bazi

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

Ako je stroj isključen kada treba planirani zadatak, izvršit će planirani zadatak kada se stroj uključi sljedeći put

Can be used by both normal users and root

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

Glavna razlika između crona i anacrona je u tome što cron učinkovito radi na strojevima koji će raditi neprekidno dok je anacron namijenjen za strojeve koji će biti isključeni za dan ili tjedan.

Ako znate neki drugi način, podijelite s nama koristeći obrazac za komentare u nastavku.