I denna handledning lär du dig vikten av cron jobb och varför du behöver dem. Du ska ta en titt på python-crontab
, en Python-modul för att interagera med crontab
. Du lär dig att manipulera cron-jobb från ett Python-program med hjälp av python-crontab
modul.
Under systemadministration är det nödvändigt att köra bakgrundsjobb på en server för att utföra rutinuppgifter. Cron är en systemprocess som används för att utföra bakgrundsuppgifter rutinmässigt. Cron kräver en fil som heter crontab
som innehåller listan över uppgifter som ska utföras vid en viss tidpunkt. Alla dessa jobb exekveras i bakgrunden vid den angivna tiden.
Om du vill visa cron-jobb som körs på ditt system, navigerar du till din terminal och skriver in:
crontab-l
Ovanstående kommando visar listan över jobb i crontab
fil. För att lägga till ett nytt cron jobb till crontab
, Skriv in:
crontab -e
Ovanstående kommando kommer att visa crontab
fil där du kan schemalägga ett jobb. Låt oss säga att du har en fil som heter hello.py
som ser ut som:
skriv ut "Hello World"
Nu, för att schemalägga ett cron-jobb för att utföra ovanstående skript för att mata ut till en annan fil, måste du lägga till följande rad kod:
50 19 * * * python hej.py >> a.txt
Ovanstående kodregel schemalägger exekveringen av filen med utdata till en fil som heter a.txt
. Siffrorna före det kommando som ska utföras definierar tidpunkten för utförandet av jobbet. Tidssyntaxen har fem delar:
Asterisker (*) i tidssyntaxen indikerar att den körs varje gång.
python-crontab
är en Python-modul som ger tillgång till cron-jobb och gör att vi kan manipulera crontab
fil från Python-programmet. Det automatiserar processen att modifiera crontab
filen manuellt. För att komma igång med python-crontab
, du måste installera modulen med pip:
pip installera python-crontab
När du har python-crontab
installeras, importera den till pythonprogrammet.
från crontab import CronTab
Låt oss använda python-crontab
modul för att skriva vårt första cron jobb. Skapa ett Python-program som heter writeDate.py
. Inuti writeDate.py
, lägg till koden för att skriva ut aktuellt datum och tid till en fil. Så här är det writeDate.py
skulle titta:
importera datetime med öppen ('dateInfo.txt', 'a') som outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))
Spara ovanstående ändringar.
Låt oss skapa ett annat Python-program som kommer att schemalägga writeDate.py
Python program att springa i varje minut. Skapa en fil som heter scheduleCron.py
.
Importera crontab
modul i scheduleCron.py
program.
från crontab import CronTab
Använda crontab
modul, låt oss komma åt systemet crontab
.
my_cron = CronTab (user = 'ditt användarnamn')
Ovanstående kommando skapar en åtkomst till systemet crontab
av användaren. Låt oss iterera genom cronjobben och du ska kunna se några manuellt skapade cronjobb för det specifika användarnamnet.
för jobb i my_cron: utskriftsjobb
Spara ändringarna och försök att exekvera scheduleCron.py
och du bör ha listan över cron jobb, om några, för den specifika användaren. Du borde kunna se något liknande vid genomförandet av ovanstående program:
50 19 * * * python hej.py >> a.txt # vid 5 a.m varje vecka med:
Låt oss gå vidare med att skapa ett nytt cronjobb med hjälp av crontab
modul. Du kan skapa en ny cron genom att använda den nya metoden och ange kommandot som ska utföras.
jobb = my_cron.new (kommando = 'python /home/jay/writeDate.py')
Som du kan se i ovanstående kodlinje har jag angett det kommando som ska utföras när cron-jobbet exekveras. När du har det nya cron-jobbet måste du schemalägga cron-jobbet.
Låt oss schemalägga cron-jobbet att köra varje minut. Så, med ett minuts intervall, skulle nuvarande datum och tid bifogas dateInfo.txt
fil. För att schemalägga jobbet för varje minut lägger du till följande rad kod:
job.minute.every (1)
När du har planerat jobbet måste du skriva jobbet till cron-fliken.
my_cron.write ()
Här är scheduleCron.py
fil:
från 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 ()
Spara ovanstående ändringar och kör Python-programmet.
python schemaCron.py
När det blir utfört, kolla på crontab
fil med följande kommando:
crontab-l
Ovanstående kommando ska visa det nyligen tillagda cron-jobbet.
* * * * * python /home/roy/writeDate.py
Vänta en minut och kolla din hemkatalog och du ska kunna se dateInfo.txt
fil med aktuellt datum och tidpunkt. Den här filen uppdateras varje minut och nuvarande datum och tid kommer att läggas till det befintliga innehållet.
För att uppdatera ett befintligt cronjobb måste du hitta cron-jobbet med kommandot eller genom att använda ett ID. Du kan ha en Id-uppsättning till ett cron-jobb i form av en kommentar när du skapar ett cron-jobb med python-crontab
. Så här kan du skapa ett cron-jobb med en kommentar:
job = my_cron.new (command = 'python /home/roy/writeDate.py', kommentar = "dateinfo")
Som framgår av ovanstående kod, har ett nytt cronjobb skapats med kommentaren som dateinfo
. Ovanstående kommentar kan användas för att hitta cron-jobbet.
Vad du behöver göra är iterera genom alla jobb i crontab
och kolla på jobbet med kommentaren dateinfo
. Här är koden:
my_cron = CronTab (user = 'roy') för jobb i my_cron: utskriftsjobb
Kontrollera efter varje jobbs kommentar med job.comment
attribut.
my_cron = CronTab (user = 'jay') för jobb i my_cron: om job.comment == 'dateinfo': utskriftsjobb
När du har jobbet, omplanera cronjobbet och skriv till cron. Här är den fullständiga koden:
från crontab import CronTab my_cron = CronTab (user = 'roy') för jobb i my_cron: om job.comment == 'dateinfo': job.hour.every (10) my_cron.write () print 'Cron job modified modified'
Spara ovanstående ändringar och kör scheduleCron.py
fil. Lista objekten i crontab
fil med följande kommando:
crontab-l
Du borde kunna se cron-jobbet med uppdaterad schemalagd tid.
* * / 10 * * * python /home/jay/writeDate.py # dateinfo
python-crontab
ger metoder för att rensa eller ta bort jobb från crontab
. Du kan ta bort ett cronjobb från crontab
baserat på schemat, kommentaren eller kommandot.
Låt oss säga att du vill rensa jobbet med kommentar dateinfo
från crontab
. Koden skulle vara:
från crontab import CronTab my_cron = CronTab (user = 'roy') för jobb i my_cron om job.comment == 'dateinfo': my_cron.remove (jobb) my_cron.write ()
På samma sätt, för att ta bort ett jobb baserat på en kommentar kan du direkt ringa ta bort
metod på my_cron
utan någon iteration. Här är koden:
my_cron.remove (kommentar = 'dateinfo')
För att ta bort alla jobb från crontab
, du kan ringa ta bort alla
metod.
my_cron.remove_all ()
När du gjort ändringar, skriv den tillbaka till cron med följande kommando:
my_cron.write ()
För att kontrollera hur många gånger ditt jobb utförs med python-crontab
, du kan använda frekvens
metod. När du har jobbet, kan du ringa metoden som heter frekvens
, vilket kommer att återge antalet gånger jobbet körs på ett år.
från crontab import CronTab my_cron = CronTab (user = 'roy') för jobb i my_cron: print job.frequency ()
För att kontrollera hur många gånger jobbet körs på en timme kan du använda metoden frequency_per_hour
.
my_cron = CronTab (user = 'roy') för jobb i my_cron: print job.frequency_per_hour ()
För att kontrollera arbetsfrekvensen på en dag kan du använda metoden frequency_per_day
.
python-crontab
ger funktionaliteten att kontrollera schemat för ett visst jobb. För att detta ska fungera behöver du croniter
modul som ska installeras på ditt system. Installera croniter
använder pip:
pip installera croniter
När du har croniter
installerat, ring schemalagsmetoden på jobbet för att få jobbschemat.
sch = job.schedule (date_from = datetime.datetime.now ())
Nu kan du få nästa jobbschema genom att använda get_next
metod.
skriv ut sch.get_next ()
Här är den fullständiga koden:
importera datetime från crontab import CronTab my_crons = CronTab (user = 'jay') för jobb i my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) skriv ut sch.get_next ()
Du kan även få det föregående schemat genom att använda get_prev
metod.
I denna handledning såg du hur du började använda python-crontab
för åtkomst till systemet crontab
från ett Python-program. Använder sig av python-crontab
, Du kan automatisera den manuella processen att skapa, uppdatera och schemalägga cron-jobb.
Har du använt python-crontab
eller några andra bibliotek för åtkomst till systemet crontab
? Jag skulle gärna höra dina tankar. Låt oss veta dina förslag i kommentarerna nedan.
Lär dig Python med vår kompletta handledning för pythonhandledning, oavsett om du bara har börjat eller du är en erfaren kodare som vill lära dig nya färdigheter.