Gestionarea posturilor Cron folosind Python

În acest tutorial, veți afla importanța cron de locuri de muncă și de ce aveți nevoie de ele. O să te uiți la python-crontab, un modul Python pentru a interacționa cu crontab. Veți învăța cum să manipulați lucrările cron dintr - un program Python utilizând python-crontab modul.

Ce este Cron?

În timpul administrării sistemului, este necesar să rulați lucrări de fundal pe un server pentru a executa sarcini de rutină. Cron este un proces de sistem care este folosit pentru a executa sarcinile de bază pe o bază de rutină. Cron cere un fișier numit crontab care conține lista sarcinilor care trebuie executate la un moment dat. Toate aceste lucrări sunt executate în fundal la ora specificată.

Pentru a vizualiza lucrările cron care rulează pe sistemul dvs., navigați la terminal și introduceți:

crontab -l

Comanda de mai sus afișează lista de lucrări din crontab fişier. Pentru a adăuga o nouă lucrare cron la crontab, introduceți:

crontab -e

Comanda de mai sus va afișa crontab fișier în care puteți programa un loc de muncă. Să presupunem că ai sunat un fișier hello.py care arată ca:

print "Hello World"

Acum, pentru a programa o sarcină cron pentru a executa scriptul de mai sus pentru a ieși într-un alt fișier, trebuie să adăugați următoarea linie de cod:

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

Linia de mai sus codifică execuția fișierului cu ieșire într-un fișier numit a.txt. Numerele înainte de executarea comenzii definesc timpul de execuție a lucrării. Sintaxa de sincronizare are cinci părți:

  1. minut
  2. ora
  3. zi a lunii
  4. lună
  5. zi a săptămânii

Asteriscurile (*) din sintaxa de sincronizare indică faptul că se va executa de fiecare dată. 

Introducerea programului Python-Crontab 

python-crontab este un modul Python care oferă acces la cron și ne permite să manipulăm crontab fișier din programul Python. Acesta automatizează procesul de modificare a crontab fișier manual. Pentru a începe cu python-crontab, trebuie să instalați modulul folosind pip:

pip instalează python-crontab

Odata ce ai python-crontab instalat, importați-l în programul python.

de la crontab import CronTab

Scrierea primului dvs. Cron Job

Să folosim python-crontab modul de a scrie prima noastră lucrare cron. Creați un program Python numit writeDate.py. Interior writeDate.py, adăugați codul pentru a imprima data și ora curente unui fișier. Iată cum writeDate.py ar arata:

import datetime cu open ('dateInfo.txt', 'a') ca outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))

Salvați modificările de mai sus.

Să creăm un alt program Python care va programa writeDate.py Programul Python să ruleze la fiecare minut. Creați un fișier numit scheduleCron.py.

Importați crontab modulul în scheduleCron.py program.

de la crontab import CronTab

Utilizarea crontab modul, să accesăm sistemul crontab.

my_cron = CronTab (user = 'numele tău de utilizator')

Comanda de mai sus creează un acces la sistem crontab al utilizatorului. Să iterăm prin intermediul lucrărilor cron și ar trebui să puteți vedea toate lucrările cron create manual pentru numele de utilizator particular.

pentru job in my_cron: job print

Salvați modificările și încercați să executați scheduleCron.py și ar trebui să aveți lista de sarcini cron, dacă există, pentru utilizatorul respectiv. Ar trebui să puteți vedea ceva similar cu execuția programului de mai sus:

50 19 * * * python hello.py >> a.txt # la 5 a.m în fiecare săptămână cu:

Să continuăm cu crearea unei noi funcții cron folosind crontab modul. Puteți crea un nou cron utilizând noua metodă și specificând comanda care trebuie executată.

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

După cum puteți vedea în linia de mai sus a codului, am specificat comanda care urmează a fi executată când se execută lucrarea cron. Odată ce aveți noul serviciu cron, trebuie să programați lucrarea cron. 

Să planificăm sarcina cron pentru a rula în fiecare minut. Deci, într-un interval de un minut, data și ora curente vor fi anexate la dateInfo.txt fişier. Pentru a programa sarcina pentru fiecare minut, adăugați următoarea linie de cod:

job.minute.every (1)

După ce ați programat lucrarea, trebuie să scrieți lucrarea în fila cron.

my_cron.write ()

Aici este scheduleCron.py fişier:

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

Salvați modificările de mai sus și executați programul Python.

programul pythonCron.py

După ce se execută, verificați crontab fișier utilizând următoarea comandă:

crontab -l

Comanda de mai sus ar trebui să afișeze noua lucrare cron adăugată.

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

Așteptați un minut și verificați directorul de acasă și ar trebui să vedeți dateInfo.txt fișier cu data și ora curente. Acest fișier va fi actualizat în fiecare minut, iar data și ora curente vor fi adăugate la conținutul existent.

Actualizarea unei lucrări Cron existente

Pentru a actualiza o lucrare cron existentă, trebuie să găsiți lucrarea cron folosind comanda sau utilizând o Id. Puteți avea un Id setat la o lucrare cron sub forma unui comentariu când creați o lucrare cron folosind python-crontab. Iată cum puteți crea o lucrare cron cu un comentariu:

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

Așa cum am văzut în linia de mai sus a codului, o nouă lucrare cron a fost creată folosind comentariul ca dateinfo. Comentariul de mai sus poate fi folosit pentru a găsi jobul cron.

Ce trebuie să faceți este să repetați toate lucrările din crontab și verificați postul cu comentariul dateinfo. Iată codul:

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

Verificați comentariul fiecărui loc de muncă utilizând funcția job.comment atribut.

 my_cron = CronTab (user = 'jay') pentru job in my_cron: if job.comment == 'dateinfo': job print

Odată ce ați lucrat, reprogramați lucrarea cron și scrieți-le cronului. Iată codul complet:

din crontab import CronTab my_cron = CronTab (user = 'roy') pentru job in my_cron: if job.comment == 'dateinfo': job.hour.every (10) my_cron.write ()

Salvați modificările de mai sus și executați scheduleCron.py fişier. Listează elementele din crontab fișier utilizând următoarea comandă:

crontab -l

Ar trebui să puteți vedea lucrarea cron cu ora actualizată a programului.

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

Ștergerea locurilor de muncă de la Crontab

python-crontab oferă metode de ștergere sau eliminare a lucrărilor crontab. Puteți să eliminați o lucrare cron din crontab bazate pe orar, comentariu sau comandă.

Să presupunem că vrei să ștergi jobul cu un comentariu dateinfo de la crontab. Codul ar fi:

de la crontab import CronTab my_cron = CronTab (user = 'roy') pentru job în my_cron dacă job.comment == 'dateinfo': my_cron.remove (job) my_cron.write ()

În mod similar, pentru a elimina o lucrare bazată pe un comentariu, puteți apela direct elimina metoda pe my_cron fără nici o iterație. Iată codul:

my_cron.remove (comment = 'dateinfo')

Pentru a elimina toate lucrările din crontab, puteți apela inlătură tot metodă.

my_cron.remove_all ()

După ce ați făcut modificările, scrieți-l înapoi la cron utilizând următoarea comandă:

my_cron.write ()

Calculul frecvenței de muncă

Pentru a verifica de câte ori lucrarea dvs. este executată folosind python-crontab, puteți utiliza frecvență metodă. Odată ce ați lucrat, puteți apela metoda numită frecvență, care va returna numărul de execuții efectuate într-un an.

de la crontab import CronTab my_cron = CronTab (user = 'roy') pentru job in my_cron: print job.frequency ()

Pentru a verifica numărul de executări de sarcini într-o oră, puteți utiliza metoda frequency_per_hour.

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

Pentru a verifica frecvența de lucru într-o zi, puteți utiliza metoda frequency_per_day

Verificarea programului de lucru

python-crontab oferă funcționalitatea pentru a verifica calendarul unei anumite sarcini. Pentru ca acest lucru să funcționeze, veți avea nevoie de el croniter modul de instalat pe sistemul dvs. Instalare croniter folosind pip:

pip install croniter

Odata ce ai croniter instalat, apelați metoda de programare la job pentru a obține programul de lucru.

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

Acum puteți obține următorul program de angajare prin utilizarea funcției get_next metodă.

print sch.get_next ()

Iată codul complet:

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

Puteți obține chiar și programul precedent folosind get_prev metodă.

Înfășurați-o

În acest tutorial, ați văzut cum să începeți să utilizați python-crontab pentru accesarea sistemului crontab de la un program Python. Utilizarea python-crontab, puteți automatiza procesul manual de creare, actualizare și programare a lucrărilor cron. 

Ați folosit-o python-crontab sau orice alte biblioteci pentru accesarea sistemului crontab? Mi-ar plăcea să vă aud gândurile. Spuneți-ne sugestiile dvs. în comentariile de mai jos.

Aflați Python

Aflați Python cu ghidul nostru complet de instrucțiuni Python, indiferent dacă sunteți doar începători sau sunteți un coder experimentat în căutarea unor noi abilități.

Cod