Voer elke minuut een Cron-job uit

Run Cron Job Every Minute



Als je een programma of script op de achtergrond op Linux wilt draaien, dan is cron-job erg belangrijk. Met behulp van cron-jobs kunt u na een bepaalde tijd een programma of script op de achtergrond uitvoeren.

Laten we eens kijken naar enkele van de echte voorbeelden van cron-jobs.







  • Stel, u heeft een website en u wilt alle gebruikers van uw website elke dag een e-mail sturen. Het enige dat u hoeft te doen, is een script voor het verzenden van e-mails schrijven en een cron-taak instellen om dat script elke dag uit te voeren.
  • Stel dat u een reclamebureau bezit en u wilt alle adverteerders met een saldo van minder dan $ 5 eraan herinneren om op te laden. Het enige dat u hoeft te doen, is een script schrijven dat het saldo van alle adverteerders controleert en wanneer het minder dan $ 5 is, stuurt het een melding naar het mobiele nummer of e-mailadres van de adverteerder. Stel vervolgens een cron-taak in om het script elke 5 tot 10 minuten of elk uur uit te voeren.

Er zijn veel andere toepassingen van cron-taken in Linux.



In dit artikel laat ik je zien hoe je elke minuut cron-taken op Linux kunt uitvoeren. Ik zal Debian 9 Stretch gebruiken voor de demonstratie. Maar u kunt elke moderne Linux-distributie naar keuze gebruiken. Laten we beginnen.



Op Linux hoeft u dat niet te zijn wortel om cronjobs uit te voeren. U kunt cron-taken uitvoeren als elke gebruiker. Elke gebruiker op Linux kan een crontab bestand om hun eigen set cron-taken uit te voeren.





Standaard heeft een gebruiker geen crontab bestand op Linux. U kunt een maken crontab bestand met het volgende commando:

$crontab-En



Als u deze opdracht voor de eerste keer uitvoert, moet u worden gevraagd een teksteditor uit de lijst te kiezen. ik zal kiezen nano , de standaard. Je kunt degene kiezen die je leuk vindt. Als u klaar bent, drukt u op .

De crontab bestand moet worden gemaakt (indien nog niet beschikbaar) en geopend met uw favoriete teksteditor. Nu kunt u uw eigen cron-taken aan het einde van dit bestand toevoegen en als u tevreden bent, slaat u het op en verlaat u de teksteditor.

Syntaxis van elke minuut een opdracht uitvoeren:

De syntaxis van crontab bestand is als volgt:

minuut uur dayOfMonth maand dayOfWeek opdrachtToRun

Hier,

  • minuut kan zijn 0 tot 59 .
  • uur kan ook zijn 0 tot 59 .
  • dag van de maand kan zijn 1 tot 31 .
  • maand kan zijn 1 tot 12 .
  • dag van de week kan zijn 0 tot 7 . 0 en 7 betekent zondag, 1 betekent maandag, 2 betekent dinsdag enzovoort.

om te rennen commandoToRun commando elke minuut, moet je het in de . schrijven crontab bestand als volgt:

* * * * *opdrachtToRun

Elke minuut een crobjob uitvoeren:

Nu we de theorieën kennen, laten we een eenvoudig script toevoegen timer.sh naar de crontab bestand en zie hoe u het kunt beheren.

In de timer.sh script, heb ik alleen de volgende regels codes. Het enige wat het doet is een nieuw bestand maken /home/shovon/bin/timer.log (indien nog niet bestaat) en voegt de uitvoer van het date-commando eraan toe.

Laten we nu het script toevoegen aan onze crontab en laat het elke minuut draaien met de volgende regel:

* * * * * /huis/sjovon/ben/timer.sh

Zodra u de crontab bestand en verlaat de teksteditor, de nieuwe crontab bestand moet worden geïnstalleerd.

Nadat een minuut is verstreken, wordt een nieuw bestand timer.log wordt gemaakt in de gewenste map, zoals u kunt zien in het gemarkeerde gedeelte van de onderstaande schermafbeelding.

Van de timer.log log-bestand, is het duidelijk dat het script timer.sh loopt elke minuut.

Fouten opvangen van de Cron Jobs:

Om fouten van een cron-taak op te vangen, kun je de fouten naar een error.log bestand en normale uitvoer naar toegang.log bestand bijvoorbeeld. Natuurlijk kunt u de bestanden elke naam geven die u maar wilt.

Om dit te demonstreren, heb ik mijn script aangepast timer.sh een klein beetje. Nu worden de fouten verzonden naar error.log bestand in de / home / sjovon / bin directory en de uitgangen worden verzonden naar toegang.log in de / home / sjovon / bin map.

In eerste instantie de /tmp/i_must_be_here bestand bestaat niet, dus ik krijg de fout in de error.log bestand zoals u kunt zien.

De toegang.log bestand is op dit moment leeg.

Nu ga ik het bestand maken /tmp/i_must_be_here

En zoals je kunt zien, is de uitvoer in de toegang.log bestand nu.

Als u wilt, kunt u de uitvoer en de fouten als volgt in hetzelfde bestand omleiden:

Zoals u kunt zien, worden STDIN- en STDERR-uitgangen naar de uitloggen het dossier.

Ervoor zorgen dat de laatste taak is voltooid voordat u de taak opnieuw uitvoert:

Om dit te laten werken, kunt u een tijdelijk bestand maken net nadat de taak is gestart en deze verwijderen net voordat deze is voltooid. Vervolgens kunt u controleren of het tijdelijke bestand bestaat voordat u de taak start. Als dit het geval is, kunt u de taak verlaten en de taak alleen uitvoeren als het tijdelijke bestand niet beschikbaar is.

Dit eenvoudige script doet precies dat.

Zoals je kunt zien, is de timer.pid bestand wordt aangemaakt.

Het lezen van toegang.log bestand bewijst dat de cron-taak niet wordt uitgevoerd voordat de vorige cron-taak is voltooid. Zoals je kunt zien, liep het om 01:32:01 en de volgende keer had het om 01:33:01 moeten lopen, maar dat gebeurde niet. In plaats daarvan liep het om 01:35:01, ongeveer 3 minuten later.

Cron Job-uitvoer organiseren voor eenvoudig debuggen:

U kunt de uitvoer mooi opmaken om uw cron-taak gemakkelijker te debuggen.

Een voorbeeld van hoe het kan worden gegeven in het volgende script.

Zoals u kunt zien, worden de outputs, fouten en succesberichten netjes afgedrukt in het logbestand.

Je kunt geweldige dingen doen met cron-jobs en shell-scripts. Ik heb hier enkele ideeën gedemonstreerd. Maar de lucht is je limiet. Voel je vrij om te experimenteren met alle ideeën die je hebt. Bedankt voor het lezen van dit artikel.