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.
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:
Asterisks (*) in de timing-syntaxis geven aan dat het elke keer zal worden uitgevoerd.
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
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.
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
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 ()
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
.
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.
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 met onze complete python-handleiding, of je nu net begint of dat je een ervaren coder bent die op zoek is naar nieuwe vaardigheden.