Cron vs Anacron: Slik planlegger du jobber ved å bruke Anacron på Linux


I denne artikkelen vil vi forklare cron og anacron og viser deg også hvordan du setter opp anacron på Linux. Vi vil også dekke en sammenligning av disse to verktøyene.

For å planlegge en oppgave på gitt eller senere tidspunkt, kan du bruke kommandoene «at» eller «batch», og for å sette opp kommandoer til å kjøre gjentatte ganger, kan du bruke cron og anacron-fasiliteter.

Cron – er en demon som brukes til å kjøre planlagte oppgaver som systemsikkerhetskopiering, oppdateringer og mange flere. Den er egnet for å kjøre planlagte oppgaver på maskiner som vil kjøre kontinuerlig 24X7, for eksempel servere.

Kommandoene/oppgavene er skriptet til cron-jobber som er planlagt i crontab-filer. Standard crontab-fil for systemet er /etc/crontab, men hver bruker kan også lage sin egen crontab-fil som kan starte kommandoer til tider som brukeren definerer.

For å lage en personlig crontab-fil, skriv ganske enkelt inn følgende:

crontab -e

Hvordan sette opp Anacron i Linux

Anacron brukes til å kjøre kommandoer med jevne mellomrom med en frekvens definert i dager. Det fungerer litt annerledes enn cron; antar at en maskin ikke vil være slått på hele tiden.

Den er egnet for å kjøre daglige, ukentlige og månedlige planlagte jobber som normalt kjøres av cron, på maskiner som ikke kjører 24-7, for eksempel bærbare datamaskiner og stasjonære maskiner.

Forutsatt at du har en planlagt oppgave (som et sikkerhetskopieringsskript) som skal kjøres ved hjelp av cron hver midnatt, muligens når du sover, og skrivebordet/den bærbare datamaskinen er av innen den tiden. Sikkerhetskopieringsskriptet ditt vil ikke bli utført.

Men hvis du bruker anacron, kan du være trygg på at neste gang du slår på skrivebordet/den bærbare datamaskinen igjen, vil sikkerhetskopieringsskriptet bli utført.

Hvordan Anacron fungerer i Linux

anacron-jobber er oppført i /etc/anacrontab og jobber kan planlegges ved å bruke formatet nedenfor (kommentarer i anacrontab-filen må starte med #).

period   delay   job-identifier   command

Fra formatet ovenfor:

  • periode – dette er frekvensen av jobbutførelse spesifisert i dager eller som @daglig, @ukentlig eller @månedlig én gang per dag, uke eller måned. Du kan også bruke tall: 1 – daglig, 7 – ukentlig, 30 – månedlig og N – antall dager.
  • forsinkelse – det er antall minutter å vente før en jobb utføres.
  • jobb-ID – det er det karakteristiske navnet på jobben skrevet i loggfiler.

For å se eksempelfiler, skriv inn:

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
  • kommando – det er kommandoen eller shell-skriptet som skal utføres.
Dette er det som praktisk talt skjer:
  • Anacron vil sjekke om en jobb er utført innen den angitte perioden i periodefeltet. Hvis ikke, utfører den kommandoen spesifisert i kommandofeltet etter å ha ventet det antall minutter som er spesifisert i forsinkelsesfeltet.
  • Når jobben er utført, registrerer den datoen i en tidsstempelfil i katalogen /var/spool/anacron med navnet spesifisert i jobb-ID-feltet (tidsstempelfilnavn).

La oss nå se på et eksempel. Dette vil kjøre /home/aaronkilik/bin/backup.sh-skriptet hver dag:

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

Hvis maskinen er av når backup.sh-jobben forventes å kjøre, vil anacron kjøre den 10 minutter etter at maskinen er slått på uten å måtte vente i ytterligere 7 dager.

Det er to viktige variabler i anacrontab-filen som du bør forstå:

  • START_HOURS_RANGE – dette angir tidsrom jobbene skal startes i (dvs. utføre jobber kun i løpet av de følgende timene).
  • RANDOM_DELAY – dette definerer den maksimale tilfeldige forsinkelsen som legges til den brukerdefinerte forsinkelsen for en jobb (som standard er den 45).

Slik kan anacrontab-filen din muligens se ut.

/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                                                                      

Følgende er en sammenligning av cron og anacron for å hjelpe deg å forstå når du skal bruke noen av dem.

It’s a daemon

Det er ikke en demon

Appropriate for server machines

Passer for stasjonære/bærbare maskiner

Enables you to run scheduled jobs every minute

Gjør at du kun kan kjøre planlagte jobber på daglig basis

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

Hvis maskinen er av når en planlagt jobb skal utføres, vil den utføre en planlagt jobb når maskinen slås på neste gang

Can be used by both normal users and root

Kan bare brukes av root med mindre annet (aktivert for vanlige brukere med spesifikke konfigurasjoner)

Den største forskjellen mellom cron og anacron er at cron fungerer effektivt på maskiner som vil kjøre kontinuerlig mens anacron er ment. for maskiner som skal slås av i løpet av en dag eller uke.

Hvis du vet noen annen måte, del med oss ved å bruke kommentarskjemaet nedenfor.