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.
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:
Stjerner (*) i timingsyntaxen indikerer at den vil løpe hver gang.
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
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.
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
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 ()
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
.
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.
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 med vår komplette pythonveiledning, enten du er bare i gang eller du er en erfaren coder som ønsker å lære nye ferdigheter..