Cron Vs Anacron: Sådan planlægger du job ved hjælp af Anacron på Linux


I denne artikel forklarer vi cron og anacron og viser dig også, hvordan du opsætter anacron på Linux. Vi vil også dække en sammenligning af disse to værktøjer.

For at planlægge en opgave på et givet eller senere tidspunkt kan du bruge 'at' eller 'batch' kommandoerne og til at opsætte kommandoer til at køre gentagne gange kan du bruge cron- og anacron-faciliteterne.

Cron - er en dæmon, der bruges til at køre planlagte opgaver såsom systembackups, opdateringer og mange flere. Det er velegnet til at køre planlagte opgaver på maskiner, der kører kontinuerligt 24X7 såsom servere.

Kommandoerne/opgaverne er scriptet til cron-job, der er planlagt i crontab-filer. Standardsystemet crontab-fil er/etc/crontab, men hver bruger kan også oprette deres egen crontab-fil, der kan starte kommandoer til tider, som brugeren definerer.

For at oprette en personlig crontab-fil skal du blot skrive følgende:

$ crontab -e

Sådan konfigureres Anacron i Linux

Anacron bruges til at køre kommandoer med jævne mellemrum med en frekvens defineret i dage. Det fungerer lidt anderledes end cron; antager, at en maskine ikke tændes hele tiden.

Det er passende at køre daglige, ugentlige og månedlige planlagte job, der normalt køres af cron, på maskiner, der ikke kører 24-7, såsom bærbare computere og desktops-maskiner.

Forudsat at du har en planlagt opgave (såsom et backup-script), der skal køres ved hjælp af cron hver midnat, muligvis når du sover, og din stationære/bærbare computer er slukket på det tidspunkt. Dit backup script udføres ikke.

Imidlertid, hvis du bruger anacron, kan du være sikker på, at næste gang du tænder for desktop/laptop igen, udføres backup-scriptet.

Sådan fungerer Anacron i Linux

anacron-job er angivet i/etc/anacrontab, og job kan planlægges i nedenstående format (kommentarer i anacrontab-filen skal starte med #).

period   delay   job-identifier   command

Fra ovenstående format:

  • periode - dette er hyppigheden af jobudførelse angivet i dage eller som @daily, @weekly eller @monthly en gang om dagen, ugen eller måneden. Du kan også bruge tal: 1 - dagligt, 7 - ugentligt, 30 - månedligt og N - antal dage.
  • forsinkelse - det er antallet af minutter, der skal ventes, før et job udføres.
  • job-id - det er det karakteristiske navn for jobbet skrevet i logfiler.

For at se eksempler på filer skal du skrive:

$ 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-scriptet, der skal udføres.

  • Anacron kontrollerer, om et job er udført inden for den angivne periode i periodefeltet. Hvis ikke, udfører den den kommando, der er angivet i kommandofeltet, efter at have ventet det antal minutter, der er angivet i forsinkelsesfeltet.
  • Når jobbet er udført, registrerer det datoen i en tidsstempelfil i mappen/var/spool/anacron med det navn, der er angivet i feltet job-id (tidsstempelfilnavn).

Lad os nu se på et eksempel. Dette kører scriptet /home/aaronkilik/bin/backup.sh hver dag:

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

Hvis maskinen er slukket, når backup.sh-job forventes at køre, vil anacron køre det 10 minutter, efter at maskinen er tændt uden at skulle vente i yderligere 7 dage.

Der er to vigtige variabler i anacrontab-filen, som du skal forstå:

  • START_HOURS_RANGE - dette indstiller tidsintervallet, hvor job startes (dvs. kun udfører job i de følgende timer).
  • RANDOM_DELAY - dette definerer den maksimale tilfældige forsinkelse, der føjes til den brugerdefinerede forsinkelse for et job (som standard er det 45).

Sådan ser din anacrontab-fil muligvis ud.

# /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 af cron og anacron for at hjælpe dig med at forstå, hvornår du skal bruge en af dem.

Den største forskel mellem cron og anacron er, at cron fungerer effektivt på maskiner, der kører kontinuerligt, mens anacron er beregnet til maskiner, der slukkes på en dag eller uge.

Hvis du kender nogen anden måde, så del med os ved hjælp af nedenstående kommentarformular.