Cron Vs Anacron: Com programar treballs amb Anacron a Linux


En aquest article, explicarem cron i anacron i també us mostrarem com configurar anacron a Linux. També farem una comparació d'aquestes dues utilitats.

Per programar una tasca en un moment determinat o posterior, podeu utilitzar les ordres a o per lots i per configurar les ordres perquè s'executin repetidament, podeu utilitzar les instal·lacions cron i anacron.

Cron: és un dimoni que s'utilitza per executar tasques programades com ara còpies de seguretat del sistema, actualitzacions i moltes més. És adequat per executar tasques programades en màquines que s'executaran contínuament 24x7, com ara servidors.

Les ordres/tasques s'escriuen en treballs cron que es programen als fitxers crontab. El fitxer crontab del sistema predeterminat és /etc/crontab, però cada usuari també pot crear el seu propi fitxer crontab que pot llançar ordres en moments que l'usuari defineixi.

Per crear un fitxer crontab personal, simplement escriviu el següent:

$ crontab -e

Com configurar Anacron a Linux

Anacron s'utilitza per executar ordres periòdicament amb una freqüència definida en dies. Funciona una mica diferent de cron; suposa que una màquina no estarà encesa tot el temps.

És adequat per executar treballs programats diaris, setmanals i mensuals que normalment s'executen per cron, en màquines que no s'executen les 24 hores del dia, com ara ordinadors portàtils i ordinadors de sobretaula.

Suposant que teniu una tasca programada (com ara un script de còpia de seguretat) que s'ha d'executar amb cron cada mitjanit, possiblement quan esteu adormit, i el vostre escriptori/ordinador portàtil està apagat en aquest moment. El vostre script de còpia de seguretat no s'executarà.

Tanmateix, si feu servir anacron, podeu estar segur que la propera vegada que torneu a encendre l'escriptori/ordinador portàtil, s'executarà l'script de còpia de seguretat.

Com funciona Anacron a Linux

Els treballs anacron es mostren a /etc/anacrontab i els treballs es poden programar amb el format següent (els comentaris dins del fitxer anacrontab han de començar amb #).

period   delay   job-identifier   command

Del format anterior:

  • període: aquesta és la freqüència d'execució de la feina especificada en dies o com a @diari, @setmanal o @mensualment una vegada al dia, a la setmana o al mes. També podeu utilitzar números: 1 - diari, 7 - setmanal, 30 - mensual i N - nombre de dies.
  • retard: és el nombre de minuts que cal esperar abans d'executar una tasca.
  • job-id: és el nom distintiu del treball escrit als fitxers de registre.

Per veure fitxers d'exemple, escriviu:

$ 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

  • ordre: és l'ordre o l'script de shell que s'ha d'executar.

  • Anacron comprovarà si s'ha executat una tasca dins del període especificat al camp del període. Si no, executa l'ordre especificada al camp d'ordres després d'esperar el nombre de minuts especificat al camp de retard.
  • Un cop s'ha executat la tasca, registra la data en un fitxer de marca de temps al directori /var/spool/anacron amb el nom especificat al camp ID de la feina (nom del fitxer de marca de temps).

Vegem ara un exemple. Això executarà l'script /home/aaronkilik/bin/backup.sh cada dia:

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

Si la màquina està apagada quan s'espera que s'executi la tasca de backup.sh, anacron l'executarà 10 minuts després d'encendre la màquina sense haver d'esperar 7 dies més.

Hi ha dues variables importants al fitxer anacrontab que hauríeu d'entendre:

  • START_HOURS_RANGE: estableix l'interval de temps en què s'iniciaran les tasques (és a dir, executar tasques només durant les hores següents).
  • RANDOM_DELAY: defineix el retard màxim aleatori afegit al retard definit per l'usuari d'una feina (per defecte és 45).

Així és com podria semblar el vostre fitxer 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                                                                      

A continuació es mostra una comparació de cron i anacron per ajudar-vos a entendre quan cal utilitzar qualsevol d'ells.

La diferència principal entre cron i anacron és que cron funciona eficaçment en màquines que s'executaran contínuament, mentre que anacron està pensat per a màquines que s'apagaran en un dia o setmana.

Si coneixeu alguna altra manera, compartiu-ho amb nosaltres mitjançant el formulari de comentaris a continuació.