Zoeken op website

Cron versus Anacron: taken plannen met Anacron op Linux


In dit artikel leggen we cron en anacron uit en laten we je ook zien hoe je anacron op Linux instelt. We zullen ook een vergelijking van deze twee hulpprogramma's bespreken.

Om een taak op een bepaald of later tijdstip te plannen, kunt u de opdrachten 'at' of 'batch' gebruiken en om opdrachten zo in te stellen dat ze herhaaldelijk worden uitgevoerd, kunt u de cron en anacron faciliteiten.

Cron – is een daemon die wordt gebruikt om geplande taken uit te voeren, zoals systeemback-ups, updates en nog veel meer. Het is geschikt voor het uitvoeren van geplande taken op machines die 24x7 continu draaien, zoals servers.

De opdrachten/taken worden in scripts opgenomen in cronjobs die zijn gepland in crontab-bestanden. Het standaard systeemcrontabbestand is /etc/crontab, maar elke gebruiker kan ook zijn eigen crontabbestand maken dat opdrachten kan starten op door de gebruiker gedefinieerde tijden.

Om een persoonlijk crontabbestand te maken, typt u eenvoudigweg het volgende:

crontab -e

Hoe Anacron in Linux in te stellen

Anacron wordt gebruikt om periodiek opdrachten uit te voeren met een frequentie gedefinieerd in dagen. Het werkt een beetje anders dan cron; gaat ervan uit dat een machine niet altijd ingeschakeld zal zijn.

Het is geschikt voor het uitvoeren van dagelijkse, wekelijkse en maandelijkse geplande taken die normaal door cron worden uitgevoerd, op machines die niet 24 uur per dag, 7 dagen per week kunnen worden uitgevoerd, zoals laptops en desktopcomputers.

Ervan uitgaande dat u een geplande taak heeft (zoals een back-upscript) die elke middernacht met cron moet worden uitgevoerd, mogelijk wanneer u slaapt, en dat uw desktop/laptop tegen die tijd uitgeschakeld is. Uw back-upscript wordt niet uitgevoerd.

Als u echter anacron gebruikt, kunt u er zeker van zijn dat de volgende keer dat u de desktop/laptop opnieuw inschakelt, het back-upscript wordt uitgevoerd.

Hoe Anacron werkt onder Linux

anacron-taken worden vermeld in /etc/anacrontab en taken kunnen worden gepland met behulp van het onderstaande formaat (opmerkingen in het anacrontab-bestand moeten beginnen met #).

period   delay   job-identifier   command

Uit het bovenstaande formaat:

  • periode – dit is de frequentie van taakuitvoering gespecificeerd in dagen of als @dagelijks, @weekly of @maandelijks voor één keer per dag, week of maand. U kunt ook cijfers gebruiken: 1 – dagelijks, 7 – wekelijks, 30 – maandelijks en N – aantal dagen.
  • vertraging – dit is het aantal minuten dat moet worden gewacht voordat een taak wordt uitgevoerd.
  • taak-id – het is de onderscheidende naam voor de taak die in logbestanden is geschreven.

Om voorbeeldbestanden te bekijken, typt u:

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
  • opdracht – het is de opdracht of het shellscript dat moet worden uitgevoerd.
Dit is wat er praktisch gebeurt:
  • Anacron controleert of een opdracht binnen de aangegeven periode in het periodeveld is uitgevoerd. Als dit niet het geval is, voert het de opdracht uit die is opgegeven in het opdrachtveld, nadat het aantal minuten is gewacht dat is opgegeven in het vertragingsveld.
  • Zodra de taak is uitgevoerd, wordt de datum vastgelegd in een tijdstempelbestand in de map /var/spool/anacron met de naam die is opgegeven in het veld job-id (tijdstempelbestandsnaam).

Laten we nu naar een voorbeeld kijken. Hierdoor wordt het script /home/aaronkilik/bin/backup.sh elke dag uitgevoerd:

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

Als de machine uitgeschakeld is wanneer de taak backup.sh naar verwachting wordt uitgevoerd, zal anacron deze 10 minuten nadat de machine is ingeschakeld uitvoeren zonder nog eens 7 dagen te hoeven wachten.

Er zijn twee belangrijke variabelen in het anacrontab-bestand die u moet begrijpen:

  • START_HOURS_RANGE – dit stelt het tijdsbereik in waarin taken worden gestart (dat wil zeggen dat taken alleen tijdens de volgende uren worden uitgevoerd).
  • RANDOM_DELAY – dit definieert de maximale willekeurige vertraging die wordt toegevoegd aan de door de gebruiker gedefinieerde vertraging van een taak (standaard is dit 45).

Dit is hoe uw anacrontab-bestand er mogelijk uit zou zien.

/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                                                                      

Het volgende is een vergelijking van cron en anacron om u te helpen begrijpen wanneer u een van beide moet gebruiken.

It’s a daemon

Het is geen demon

Appropriate for server machines

Geschikt voor desktop-/laptopmachines

Enables you to run scheduled jobs every minute

Hiermee kunt u alleen geplande taken op dagelijkse basis uitvoeren

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

Als het apparaat uitgeschakeld is wanneer een geplande taak moet worden uitgevoerd, zal het een geplande taak uitvoeren wanneer het apparaat de volgende keer wordt ingeschakeld

Can be used by both normal users and root

Kan alleen door root worden gebruikt, tenzij anders (ingeschakeld voor normale gebruikers met specifieke configuraties)

Het belangrijkste verschil tussen cron en anacron is dat cron effectief werkt op machines die continu draaien terwijl anacron bedoeld is voor machines die binnen een dag of week worden uitgeschakeld.

Als u een andere manier weet, kunt u deze met ons delen via het onderstaande opmerkingenformulier.