Hoe Een Cron Job Elke 10 Seconden Uitvoeren In Linux?

Gepubliceerd 19 augustus 2024

Probleem: Cron Jobs Vaker Uitvoeren Dan Eens Per Minuut

Cron jobs in Linux worden gewoonlijk uitgevoerd met intervallen van één minuut of langer. Soms moet je taken vaker uitvoeren, zoals elke 10 seconden. Dit kan een probleem zijn voor taken die bijna onmiddellijk moeten worden uitgevoerd.

Meerdere Cron Entries Gebruiken met Sleep Commando's

De Cron Jobs Instellen

Om een taak elke 10 seconden in Linux uit te voeren, kun je meerdere cron entries gebruiken met sleep commando's. Deze methode gebruikt zes cron entries die elke minuut worden uitgevoerd, elk met een andere sleep duur. Door de uitvoeringstijden uit te spreiden, kun je een interval van 10 seconden tussen elke taakuitvoering verkrijgen.

Het proces omvat:

  1. Zes cron entries maken die elke minuut worden uitgevoerd
  2. Sleep commando's toevoegen aan elke entry om de uitvoeringstijd te verschuiven
  3. Hetzelfde commando gebruiken voor elke entry

Hier is een voorbeeld van deze cron entries:

* * * * * /usr/bin/wget http://api.us/application/
* * * * * sleep 10; /usr/bin/wget http://api.us/application/
* * * * * sleep 20; /usr/bin/wget http://api.us/application/
* * * * * sleep 30; /usr/bin/wget http://api.us/application/
* * * * * sleep 40; /usr/bin/wget http://api.us/application/
* * * * * sleep 50; /usr/bin/wget http://api.us/application/

In deze setup wordt de eerste entry aan het begin van elke minuut uitgevoerd. De volgende entries gebruiken sleep commando's om hun uitvoering te vertragen met 10, 20, 30, 40 en 50 seconden. Dit creëert een patroon waarbij het commando elke 10 seconden gedurende elke minuut wordt uitgevoerd.

Deze methode helpt je om de limiet van één minuut van cron te omzeilen en je taak met intervallen van 10 seconden uit te voeren.

Tip: Loggen van Cron Job Uitvoering

Om de uitvoering van je cron jobs te monitoren en te verifiëren dat ze op de juiste intervallen worden uitgevoerd, voeg je een logging commando toe aan elke entry. Bijvoorbeeld:

* * * * * /usr/bin/wget http://api.us/application/ && echo "$(date): Job executed" >> /var/log/cron_job.log
* * * * * sleep 10; /usr/bin/wget http://api.us/application/ && echo "$(date): Job executed" >> /var/log/cron_job.log

Dit zal een logbestand maken met tijdstempels voor elke job uitvoering, wat je helpt bij het bijhouden en debuggen van je cron setup.