Weboldal keresés

Cron vs Anacron: Munkák ütemezése az Anacron használatával Linuxon


Ebben a cikkben elmagyarázzuk a cron és az anacron kifejezéseket, valamint bemutatjuk, hogyan kell beállítani az anacront Linuxon. Kitérünk e két segédprogram összehasonlítására is.

Ha egy feladatot adott vagy későbbi időpontra szeretne ütemezni, használhatja az 'at' vagy 'batch' parancsot, és a parancsok ismételt futtatását állíthatja be, használhatja a cron és anacron létesítmények.

Cron – egy démon, amelyet ütemezett feladatok, például rendszermentések, frissítések és sok más futtatására használnak. Alkalmas ütemezett feladatok futtatására olyan gépeken, amelyek folyamatosan, éjjel-nappal futnak, például szervereken.

A parancsok/feladatok cron jobokba vannak írva, amelyek crontab fájlokban vannak ütemezve. A rendszer alapértelmezett crontab fájlja az /etc/crontab, de minden felhasználó létrehozhat saját crontab fájlt is, amely a felhasználó által meghatározott időközönként parancsokat indíthat el.

Személyes crontab fájl létrehozásához egyszerűen írja be a következőket:

crontab -e

Az Anacron beállítása Linux alatt

Az Anacron a parancsok időszakos futtatására szolgál, napokban meghatározott gyakorisággal. Kicsit másképp működik, mint a cron; feltételezi, hogy a gép nem lesz állandóan bekapcsolva.

Alkalmas napi, heti és havi ütemezett feladatok futtatására, amelyeket általában a cron futtat, olyan gépeken, amelyek nem futnak éjjel-nappal, például laptopokon és asztali gépeken.

Feltéve, hogy van egy ütemezett feladat (például egy biztonsági szkript), amelyet minden éjfélkor le kell futtatni a cron segítségével, esetleg amikor alszik, és az asztali számítógépe/laptopja addigra ki van kapcsolva. A biztonsági mentési szkript nem kerül végrehajtásra.

Ha azonban az anacront használja, biztos lehet benne, hogy amikor legközelebb újra bekapcsolja az asztali számítógépet/laptopot, a biztonsági mentési szkript végrehajtásra kerül.

Hogyan működik az Anacron Linux alatt

Az anacron-feladatok az /etc/anacrontab mappában vannak felsorolva, és a feladatok ütemezhetők az alábbi formátumban (az anacrontab-fájlban lévő megjegyzéseknek #-vel kell kezdődniük).

period   delay   job-identifier   command

A fenti formátumból:

  • időszak – ez a munkavégzés gyakorisága napokban, vagy @daily, @weekly vagy @monthly néven naponta, hetente vagy havonta egyszer. Használhat számokat is: 1 – napi, 7 – heti, 30 – havi és N – napok száma.
  • késleltetés – a feladat végrehajtása előtti várakozási idők száma.
  • job-id – ez a munka megkülönböztető neve a naplófájlokban.

A példafájlok megtekintéséhez írja be:

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
  • parancs – ez a végrehajtandó parancs vagy shell-szkript.
Gyakorlatilag ez történik:
  • Az Anacron ellenőrzi, hogy a feladat végrehajtása megtörtént-e a megadott időszakon belül az időszak mezőben. Ha nem, akkor a parancsmezőben megadott parancsot hajtja végre, miután kivárta a késleltetési mezőben megadott percszámot.
  • A feladat végrehajtása után rögzíti a dátumot egy időbélyegfájlban a /var/spool/anacron könyvtárban a job-id (időbélyegfájl neve) mezőben megadott névvel.

Nézzünk most egy példát. Ez minden nap futtatja a /home/aronkilik/bin/backup.sh szkriptet:

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

Ha a gép ki van kapcsolva, amikor a backup.sh feladat várhatóan lefut, az anacron a gép bekapcsolása után 10 perccel lefuttatja anélkül, hogy további 7 napot kellene várnia.

Az anakrontab fájlban két fontos változó található, amelyeket meg kell értenie:

  • START_HOURS_RANGE – beállítja azt az időtartamot, amelyen belül a feladatok elindulnak (azaz csak a következő órákban hajtsa végre a feladatokat).
  • RANDOM_DELAY – ez határozza meg a maximális véletlenszerű késleltetést, amely hozzáadódik egy feladat felhasználó által meghatározott késleltetéséhez (alapértelmezés szerint 45).

Így nézhet ki az anakrontab fájl.

/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                                                                      

Az alábbiakban a cron és az anacron összehasonlítása látható, hogy segítsen megérteni, mikor érdemes használni valamelyiket.

It’s a daemon

Ez nem démon

Appropriate for server machines

Asztali/laptop gépekhez megfelelő

Enables you to run scheduled jobs every minute

Csak az ütemezett feladatok napi futtatását teszi lehetővé

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

Ha a gép ki van kapcsolva, amikor egy ütemezett feladat esedékes, akkor a következő bekapcsoláskor ütemezett feladatot fog végrehajtani.

Can be used by both normal users and root

Csak a root használhatja, hacsak másképp nem (engedélyezett normál felhasználók számára meghatározott konfigurációkkal)

A fő különbség a cron és az anacron között az, hogy a cron hatékonyan működik azokon a gépeken, amelyek folyamatosan működnek, amíg az anacron célja. olyan gépekhez, amelyek egy napon vagy héten belül kikapcsolnak.

Ha tud más módot, ossza meg velünk az alábbi megjegyzés űrlap segítségével.