Cron Vs Anacron: Cum să programați joburi folosind Anacron pe Linux


În acest articol, vom explica cron și anacron și, de asemenea, vă vom arăta cum să configurați anacron pe Linux. Vom acoperi, de asemenea, o comparație a acestor două utilități.

Pentru a programa o sarcină la o oră dată sau ulterioară, puteți utiliza comenzile „la” sau „batch” și pentru a configura comenzile să ruleze în mod repetat, puteți utiliza < facilitățicron și anacron.

Cron – este un demon folosit pentru a rula sarcini programate, cum ar fi copii de rezervă ale sistemului, actualizări și multe altele. Este potrivit pentru rularea sarcinilor programate pe mașini care vor rula continuu 24 de ore pe zi, 7 zile pe zi, cum ar fi serverele.

Comenzile/sarcinile sunt scriptate în joburi cron care sunt programate în fișierele crontab. Fișierul crontab de sistem implicit este /etc/crontab, dar fiecare utilizator își poate crea și propriul fișier crontab care poate lansa comenzi la momentele pe care utilizatorul le definește.

Pentru a crea un fișier crontab personal, tastați pur și simplu următoarele:

crontab -e

Cum se configurează Anacron în Linux

Anacron este folosit pentru a rula comenzi periodic cu o frecvență definită în zile. Funcționează puțin diferit de cron; presupune că o mașină nu va fi pornită tot timpul.

Este potrivit pentru a rula joburi programate zilnice, săptămânale și lunare, rulate în mod normal de cron, pe mașini care nu vor rula 24-7, cum ar fi laptopurile și computerele desktop.

Presupunând că aveți o sarcină programată (cum ar fi un script de rezervă) care să fie executată folosind cron la fiecare miezul nopții, eventual când dormiți, iar desktopul/laptop-ul este oprit până la acel moment. Scriptul dvs. de rezervă nu va fi executat.

Cu toate acestea, dacă utilizați anacron, puteți fi sigur că data viitoare când porniți din nou desktopul/laptop-ul, scriptul de rezervă va fi executat.

Cum funcționează Anacron în Linux

Lucrările anacron sunt listate în /etc/anacrontab și lucrările pot fi programate folosind formatul de mai jos (comentariile din fișierul anacrontab trebuie să înceapă cu #).

period   delay   job-identifier   command

Din formatul de mai sus:

  • perioada – aceasta este frecvența de execuție a sarcinii specificată în zile sau ca @zilnic, @săptămânal sau @lunar pentru o dată pe zi, săptămână sau lună. Puteți folosi și numere: 1 – zilnic, 7 – săptămânal, 30 – lunar și N – număr de zile.
  • întârziere – este numărul de minute de așteptat înainte de a executa o lucrare.
  • job-id – este numele distinctiv al jobului scris în fișierele jurnal.

Pentru a vizualiza exemple de fișiere, tastați:

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
  • comanda – este comanda sau scriptul shell care trebuie executat.
Iată ce se întâmplă practic:
  • Anacron va verifica dacă o lucrare a fost executată în perioada specificată în câmpul perioadei. Dacă nu, execută comanda specificată în câmpul de comandă după ce a așteptat numărul de minute specificat în câmpul de întârziere.
  • Odată ce lucrarea a fost executată, aceasta înregistrează data într-un fișier de marcaj temporal în directorul /var/spool/anacron cu numele specificat în câmpul ID-ul sarcinii (nume fișier marcaj temporal).

Să ne uităm acum la un exemplu. Aceasta va rula zilnic scriptul /home/aaronkilik/bin/backup.sh:

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

Dacă mașina este oprită când se așteaptă să ruleze jobul backup.sh, anacron o va rula la 10 minute după ce mașina este pornită, fără a fi nevoie să aștepte încă 7 zile.

Există două variabile importante în fișierul anacrontab pe care ar trebui să le înțelegeți:

  • START_HOURS_RANGE – aceasta setează intervalul de timp în care vor fi începute lucrările (adică executați lucrări numai în următoarele ore).
  • RANDOM_DELAY – aceasta definește întârzierea maximă aleatorie adăugată la întârzierea definită de utilizator a unei lucrări (în mod implicit este 45).

Acesta este modul în care ar arăta fișierul anacrontab.

/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                                                                      

Următoarea este o comparație între cron și anacron pentru a vă ajuta să înțelegeți când să utilizați oricare dintre ele.

It’s a daemon

Nu este un demon

Appropriate for server machines

Potrivit pentru computere desktop/laptop

Enables you to run scheduled jobs every minute

Vă permite să executați numai lucrări programate zilnic

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

Dacă mașina este oprită atunci când este programată o lucrare, va executa o lucrare programată când mașina este pornită data viitoare

Can be used by both normal users and root

Poate fi folosit numai de root, dacă nu este altfel (activat pentru utilizatorii normali cu configurații specifice)

Diferența majoră dintre cron și anacron este că cron funcționează eficient pe mașinile care vor rula continuu în timp ce anacron este destinat pentru mașinile care vor fi oprite într-o zi sau o săptămână.

Dacă știți orice altă modalitate, împărtășiți-ne folosind formularul de comentarii de mai jos.