Î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.
Î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:
Asteriscurile (*) din sintaxa de sincronizare indică faptul că se va executa de fiecare dată.
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
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.
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
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 ()
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
.
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ă.
Î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 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.