Cron-taken beheren met Python

In deze tutorial leert u hoe belangrijk cron-taken zijn en waarom u ze nodig hebt. Je zult een kijkje nemen python-crontab, een Python-module om te communiceren met de crontab. U leert cron-taken van een Python-programma te manipuleren met behulp van de python-crontab module.

Wat is Cron?

Tijdens systeembeheer is het noodzakelijk achtergrondtaken op een server uit te voeren om routinetaken uit te voeren. Cron is een systeemproces dat wordt gebruikt om achtergrondtaken routinematig uit te voeren. Voor Cron is een bestand met de naam crontab die de lijst bevat met taken die op een bepaald moment moeten worden uitgevoerd. Al deze taken worden op de opgegeven tijd op de achtergrond uitgevoerd.

Om cron-taken te bekijken die op uw systeem worden uitgevoerd, navigeert u naar uw terminal en typt u:

crontab -l

De opdracht hierboven geeft de lijst met taken weer in de crontab het dossier. Om een ​​nieuwe cron-taak toe te voegen aan de crontab, typ in:

crontab -e

Het bovenstaande commando zal de crontab bestand waar u een taak kunt plannen. Laten we zeggen dat je een bestand hebt genaamd hello.py welke eruit ziet als:

print "Hallo wereld"

Als u nu een cron-taak wilt plannen om het bovenstaande script uit te voeren naar een ander bestand, moet u de volgende regel code toevoegen:

50 19 * * * python hello.py >> a.txt

De bovenstaande coderegel plant de uitvoering van het bestand met uitvoer naar een bestand met de naam a.txt. De cijfers vóór de uit te voeren opdracht bepalen het tijdstip van uitvoering van de taak. De timing-syntaxis bestaat uit vijf delen:

  1. minuut
  2. uur
  3. dag van de maand
  4. maand
  5. dag van de week

Asterisks (*) in de timing-syntaxis geven aan dat het elke keer zal worden uitgevoerd. 

Introductie van Python-Crontab 

python-crontab is een Python-module die toegang biedt tot cron-taken en stelt ons in staat om de. te manipuleren crontab bestand van het Python-programma. Het automatiseert het proces van het wijzigen van de crontab bestand handmatig. Om mee te beginnen python-crontab, je moet de module installeren met behulp van pip:

pip installeer python-crontab

Eens je hebt python-crontab geïnstalleerd, importeer het in het python-programma.

van crontab importeer CronTab

Uw eerste Cron-taak schrijven

Laten we de gebruiken python-crontab module om onze eerste cron-job te schrijven. Maak een Python-programma met de naam writeDate.py. Binnen writeDate.py, voeg de code toe om de huidige datum en tijd naar een bestand af te drukken. Hier is hoe writeDate.py zou kijken:

importeer datetime met open ('dateInfo.txt', 'a') als outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))

Sla de bovenstaande wijzigingen op.

Laten we een ander Python-programma maken dat het writeDate.py Python-programma wordt om elke minuut uitgevoerd. Maak een bestand met de naam scheduleCron.py.

Importeer de crontab module in de scheduleCron.py programma.

van crontab importeer CronTab

De ... gebruiken crontab module, laten we toegang krijgen tot het systeem crontab.

my_cron = CronTab (user = 'uw gebruikersnaam')

Het bovenstaande commando creëert een toegang tot het systeem crontab van de gebruiker. Laten we de cron-taken doorlopen en je zou handmatig gecreëerde cron-taken voor de betreffende gebruikersnaam kunnen zien.

voor taak in mijn_kraan: afdruktaak

Sla de wijzigingen op en probeer de scheduleCron.py en u moet de lijst met cron-taken hebben, als die er zijn, voor de specifieke gebruiker. U zou iets soortgelijks kunnen zien in uitvoering van het bovenstaande programma:

50 19 * * * python hello.py >> a.txt # om 5 a.m elke week met:

Laten we doorgaan met het maken van een nieuwe cron-taak met behulp van de crontab module. U kunt een nieuwe cron maken door de nieuwe methode te gebruiken en de uit te voeren opdracht op te geven.

job = my_cron.new (opdracht = 'python /home/jay/writeDate.py')

Zoals je kunt zien in de bovenstaande regel code, heb ik de opdracht opgegeven die moet worden uitgevoerd wanneer de cron-taak wordt uitgevoerd. Zodra u de nieuwe cron-taak hebt, moet u de cron-taak plannen. 

Laten we plannen dat de cron-taak elke minuut wordt uitgevoerd. Dus met een interval van één minuut worden de huidige datum en tijd toegevoegd aan de dateInfo.txt het dossier. Als u de taak voor elke minuut wilt plannen, voegt u de volgende regel code toe:

job.minute.every (1)

Nadat u de taak hebt gepland, moet u de taak naar de cron-tab schrijven.

my_cron.write ()

Hier is de scheduleCron.py het dossier:

from crontab import CronTab my_cron = CronTab (user = 'roy') job = my_cron.new (command = 'python /home/roy/writeDate.py') job.minute.every (1) my_cron.write ()

Sla de bovenstaande wijzigingen op en voer het Python-programma uit.

python scheduleCron.py

Als het eenmaal is uitgevoerd, controleert u het crontab bestand met behulp van de volgende opdracht:

crontab -l

De opdracht hierboven moet de nieuw toegevoegde cron-taak weergeven.

* * * * * python /home/roy/writeDate.py

Wacht een minuut en controleer je thuismap en je zou het kunnen zien dateInfo.txt bestand met de huidige datum en tijd. Dit bestand wordt elke minuut bijgewerkt en de huidige datum en tijd worden toegevoegd aan de bestaande inhoud.

Een bestaande Cron-taak bijwerken

Om een ​​bestaande cron-job bij te werken, moet u de cron-job vinden met behulp van de opdracht of met behulp van een Id. U kunt een Id instellen op een cron-taak in de vorm van een opmerking bij het maken van een cron-taak met python-crontab. Hier ziet u hoe u een cron-job kunt maken met een opmerking:

 job = my_cron.new (command = 'python /home/roy/writeDate.py', comment = "dateinfo")

Zoals te zien is in de bovenstaande coderegel, is een nieuwe cron-taak gemaakt met behulp van de opmerking als dateinfo. De bovenstaande opmerking kan worden gebruikt om de cron-taak te vinden.

Wat u moet doen, is door alle opdrachten heen herhalen crontab en controleer de taak met de opmerking dateinfo. Hier is de code:

 my_cron = CronTab (user = 'roy') voor job in my_cron: print job

Controleer de opmerking van elke taak met behulp van de job.comment attribuut.

 my_cron = CronTab (user = 'jay') voor job in my_cron: if job.comment == 'dateinfo': printopdracht

Zodra u de taak hebt, moet u de cron-taak opnieuw plannen en naar de cron schrijven. Hier is de volledige code:

van crontab import CronTab my_cron = CronTab (user = 'roy') voor job in my_cron: als job.comment == 'dateinfo': job.hour.every (10) my_cron.write () print 'Cron job succesvol gewijzigd'

Sla de bovenstaande wijzigingen op en voer de scheduleCron.py het dossier. Maak een lijst van de items in de crontab bestand met behulp van de volgende opdracht:

crontab -l

U moet de cron-taak kunnen zien met bijgewerkte planningsduur.

* * / 10 * * * python /home/jay/writeDate.py # dateinfo

Taken wissen van Crontab

python-crontab biedt methoden om taken te wissen of verwijderen crontab. U kunt een cron-taak verwijderen uit de crontab gebaseerd op het schema, de opmerking of het commando.

Stel dat u de taak met commentaar wilt wissen dateinfo van de crontab. De code zou zijn:

van crontab import CronTab my_cron = CronTab (user = 'roy') voor job in my_cron if job.comment == 'dateinfo': my_cron.remove (job) my_cron.write ()

Evenzo, om een ​​taak te verwijderen op basis van een opmerking, kunt u rechtstreeks bellen met verwijderen methode op de my_cron zonder enige iteratie. Hier is de code:

my_cron.remove (comment = 'dateinfo')

Om alle taken uit de crontab, je kunt de Verwijder alles methode.

my_cron.remove_all ()

Als u klaar bent met de wijzigingen, schrijft u deze terug naar de cron met behulp van de volgende opdracht:

my_cron.write ()

Jobfrequentie berekenen

Om te controleren hoe vaak uw taak wordt uitgevoerd met python-crontab, je kunt de gebruiken frequentie methode. Zodra u de taak hebt, kunt u de methode genaamd frequentie, waarmee het aantal keren dat de taak in een jaar wordt uitgevoerd wordt geretourneerd.

from crontab import CronTab my_cron = CronTab (user = 'roy') voor job in my_cron: print job.frequency ()

Als u wilt controleren hoeveel keer de taak binnen een uur wordt uitgevoerd, kunt u de methode gebruiken frequency_per_hour.

my_cron = CronTab (user = 'roy') voor job in my_cron: print job.frequency_per_hour ()

Als u de taakfrequentie op een dag wilt controleren, kunt u de methode gebruiken frequency_per_day

Het takenoverzicht controleren

python-crontab biedt de functionaliteit om het schema van een bepaalde taak te controleren. Om dit te laten werken, heb je de croniter module die op uw systeem moet worden geïnstalleerd. Installeren croniter met behulp van pip:

pip installatie croniter

Eens je hebt croniter geïnstalleerd, roep de planningsmethode op om het taakschema te krijgen.

sch = job.schedule (date_from = datetime.datetime.now ())

Nu kunt u de volgende taakplanning krijgen met behulp van de get_next methode.

print sch.get_next ()

Hier is de volledige code:

import datetime van crontab import CronTab my_crons = CronTab (user = 'jay') voor job in my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) print sch.get_next ()

U kunt zelfs het vorige schema ophalen met behulp van de get_prev methode.

Inpakken

In deze zelfstudie zag u hoe u aan de slag kunt gaan met het gebruik python-crontab voor toegang tot het systeem crontab van een Python-programma. Gebruik makend van python-crontab, u kunt het handmatige proces voor het maken, bijwerken en plannen van cron-taken automatiseren. 

Heb je gebruikt python-crontab of andere bibliotheken voor toegang tot het systeem crontab? Ik zou graag je gedachten horen. Laat ons uw suggesties weten in de opmerkingen hieronder.

Leer Python

Leer Python met onze complete python-handleiding, of je nu net begint of dat je een ervaren coder bent die op zoek is naar nieuwe vaardigheden.