Administrere Cron Jobs ved hjelp av Python

I denne opplæringen lærer du viktigheten av cron-jobber og hvorfor du trenger dem. Du vil se på python-crontab, en Python-modul for å samhandle med crontab. Du lærer å manipulere cron-jobber fra et Python-program ved hjelp av python-crontab modul.

Hva er Cron?

Under systemadministrasjon er det nødvendig å kjøre bakgrunnsjobber på en server for å utføre rutinemessige oppgaver. Cron er en systemprosess som brukes til å utføre bakgrunnsoppgaver rutinemessig. Cron krever en fil som heter crontab som inneholder listen over oppgaver som skal utføres på et bestemt tidspunkt. Alle disse jobbene utføres i bakgrunnen på den angitte tiden.

Hvis du vil se cron-jobber som kjører på systemet, navigerer du til terminalen din og skriver inn:

crontab-l

Kommandoen ovenfor viser listen over jobber i crontab fil. For å legge til en ny cron jobb i crontab, Skriv inn:

crontab -e

Kommandoen ovenfor vil vise crontab fil hvor du kan planlegge en jobb. La oss si at du har en fil som heter hello.py som ser ut som:

skriv ut "Hello World"

Nå, for å planlegge en cron-jobb for å utføre det ovennevnte skriptet for å sende ut til en annen fil, må du legge til følgende linje kode:

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

Ovennevnte linje av kode planlegger utførelsen av filen med utdata til en fil som heter a.txt. Tallene før kommandoen som skal utføres, definerer tidspunktet for utførelsen av jobben. Timing-syntaksen har fem deler:

  1. minutt
  2. time
  3. dag i måneden
  4. måned
  5. ukedag

Stjerner (*) i timingsyntaxen indikerer at den vil løpe hver gang. 

Vi presenterer Python-Crontab 

python-crontab er en Python-modul som gir tilgang til cron-jobber og lar oss manipulere crontab fil fra Python-programmet. Det automatiserer prosessen med å modifisere crontab filen manuelt. Å komme i gang med python-crontab, du må installere modulen ved hjelp av pip:

pip installere python-crontab

Når du har python-crontab installert, importer den til python-programmet.

fra crontab import CronTab

Skrive din første Cron jobb

La oss bruke python-crontab modul for å skrive vår første cron jobb. Opprett et Python-program kalt writeDate.py. Innsiden writeDate.py, legg til koden for å skrive ut gjeldende dato og klokkeslett til en fil. Her er hvordan writeDate.py ville se:

importer datetime med åpen ('dateInfo.txt', 'a') som outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))

Lagre endringene ovenfor.

La oss lage et annet Python-program som skal planlegge writeDate.py Python program å løpe i hvert minutt. Opprett en fil som heter scheduleCron.py.

Importer crontab modul inn i scheduleCron.py program.

fra crontab import CronTab

Bruker crontab modul, la oss få tilgang til systemet crontab.

my_cron = CronTab (bruker = 'brukernavnet ditt')

Kommandoen ovenfor skaper tilgang til systemet crontab av brukeren. La oss iterere gjennom cron-jobbene, og du bør kunne se alle manuelt opprettede cron-jobber for det bestemte brukernavnet.

for jobb i my_cron: utskriftsjobb

Lagre endringene og prøv å utføre scheduleCron.py og du bør ha listen over cron-jobber, hvis noen, for den aktuelle brukeren. Du bør kunne se noe lignende på utførelse av det ovennevnte programmet:

50 19 * * * python hello.py >> a.txt # klokka 5 hver uke med:

La oss gå videre med å skape en ny cron jobb ved hjelp av crontab modul. Du kan opprette en ny cron ved å bruke den nye metoden og spesifisere kommandoen som skal utføres.

jobb = my_cron.new (kommando = 'python /home/jay/writeDate.py')

Som du kan se i koden ovenfor, har jeg angitt kommandoen som skal utføres når cron-jobben utføres. Når du har den nye Cron-jobben, må du planlegge Cron-jobben. 

La oss planlegge cron-jobben til å løpe hvert minutt. Så, i løpet av ett minutt, vil gjeldende dato og klokkeslett legges til dateInfo.txt fil. For å planlegge jobben for hvert minutt, legg til følgende linje med kode:

job.minute.every (1)

Når du har planlagt jobben, må du skrive jobben til cron-fanen.

my_cron.write ()

Her er scheduleCron.py fil:

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

Lagre endringene ovenfor og utfør Python-programmet.

python scheduleCron.py

Når det blir utført, sjekk crontab fil ved hjelp av følgende kommando:

crontab-l

Kommandoen ovenfor skal vise den nylig lagt til cron-jobben.

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

Vent litt og sjekk din hjemmekatalog, og du bør kunne se dateInfo.txt fil med gjeldende dato og klokkeslett. Denne filen vil bli oppdatert hvert minutt, og gjeldende dato og klokkeslett vil bli lagt til det eksisterende innholdet.

Oppdaterer en eksisterende Cron-jobb

For å oppdatere en eksisterende cron-jobb må du finne cron-jobben ved hjelp av kommandoen eller ved å bruke et ID. Du kan ha et ID-sett til en cron-jobb i form av en kommentar når du lager en cron-jobb ved hjelp av python-crontab. Slik gjør du en cron-jobb med en kommentar:

 jobb = my_cron.new (kommando = 'python /home/roy/writeDate.py', kommentar = "dateinfo")

Som vist i koden ovenfor, har en ny cron-jobb blitt opprettet ved hjelp av kommentaren som dateinfo. Ovennevnte kommentar kan brukes til å finne cron-jobben.

Det du trenger å gjøre er iterate gjennom alle jobbene i crontab og sjekk for jobben med kommentaren dateinfo. Her er koden:

 my_cron = CronTab (user = 'roy') for jobb i my_cron: utskriftsjobb

Sjekk for hver jobbs kommentar ved hjelp av job.comment Egenskap.

 my_cron = CronTab (user = 'jay') for jobb i my_cron: hvis job.comment == 'dateinfo': utskriftsjobb

Når du har jobben, reschedulere cron jobben og skriv til cron. Her er den komplette koden:

fra crontab import CronTab my_cron = CronTab (bruker = 'roy') for jobb i my_cron: hvis job.comment == 'dateinfo': job.hour.every (10) my_cron.write () print 'Cron jobben endret'

Lagre endringene ovenfor og utfør scheduleCron.py fil. Legg opp elementene i crontab fil ved hjelp av følgende kommando:

crontab-l

Du bør kunne se cron-jobben med oppdatert tidsplan.

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

Fjerne jobber fra Crontab

python-crontab gir metoder for å fjerne eller fjerne jobber fra crontab. Du kan fjerne en cron jobb fra crontab basert på tidsplanen, kommentaren eller kommandoen.

La oss si at du vil slette jobben med kommentar dateinfo fra crontab. Koden ville være:

fra crontab import CronTab my_cron = CronTab (bruker = 'roy') for jobb i my_cron hvis job.comment == 'dateinfo': my_cron.remove (jobb) my_cron.write ()

På samme måte, for å fjerne en jobb basert på en kommentar, kan du ringe direkte til fjerne metode på my_cron uten noen iterasjon. Her er koden:

my_cron.remove (kommentar = 'dateinfo')

For å fjerne alle jobbene fra crontab, du kan ringe til Fjern alle metode.

my_cron.remove_all ()

Når du er ferdig med endringene, skriv den tilbake til cronet ved å bruke følgende kommando:

my_cron.write ()

Beregne jobbfrekvens

For å sjekke hvor mange ganger jobben din blir utført ved hjelp av python-crontab, du kan bruke Frekvens metode. Når du har jobben, kan du ringe metoden som heter Frekvens, som vil returnere antall ganger jobben blir utført i et år.

fra crontab import CronTab my_cron = CronTab (user = 'roy') for jobb i my_cron: print job.frequency ()

For å sjekke antall ganger jobben blir utført på en time, kan du bruke metoden frequency_per_hour.

my_cron = CronTab (user = 'roy') for jobb i my_cron: print job.frequency_per_hour ()

For å sjekke jobbfrekvensen på en dag, kan du bruke metoden frequency_per_day

Kontrollerer jobbplanen

python-crontab gir funksjonaliteten til å sjekke tidsplanen for en bestemt jobb. For at dette skal fungere, trenger du croniter modulen som skal installeres på systemet ditt. Installere croniter bruker pip:

pip installere croniter

Når du har croniter installert, ring tidsplanmetoden på jobben for å få jobbplanen.

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

Nå kan du få neste jobbplan ved å bruke get_next metode.

skriv ut sch.get_next ()

Her er den komplette koden:

importer datetime fra crontab import CronTab my_crons = CronTab (user = 'jay') for jobb i my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) print sch.get_next ()

Du kan til og med få den forrige tidsplanen ved å bruke get_prev metode.

Pakke det opp

I denne veiledningen så du hvordan du kommer i gang med å bruke python-crontab for tilgang til systemet crontab fra et Python-program. Ved hjelp av python-crontab, Du kan automatisere den manuelle prosessen med å lage, oppdatere og planlegge cron-jobber. 

Har du brukt python-crontab eller andre biblioteker for tilgang til system crontab? Jeg vil gjerne høre tankene dine. Gi oss beskjed om dine forslag i kommentarene nedenfor.

Lær python

Lær Python med vår komplette pythonveiledning, enten du er bare i gang eller du er en erfaren coder som ønsker å lære nye ferdigheter..