In questo tutorial imparerai l'importanza dei lavori cron e del perché ne hai bisogno. Darai un'occhiata a python-crontab
, un modulo Python per interagire con il crontab
. Imparerai come manipolare i lavori cron da un programma Python usando il python-crontab
modulo.
Durante l'amministrazione del sistema, è necessario eseguire processi in background su un server per eseguire attività di routine. Cron è un processo di sistema che viene utilizzato per eseguire attività in background su una base di routine. Cron richiede un file chiamato crontab
che contiene l'elenco delle attività da eseguire in un determinato momento. Tutti questi lavori vengono eseguiti in background all'ora specificata.
Per visualizzare i cron jobs in esecuzione sul tuo sistema, accedi al tuo terminale e digita:
crontab -l
Il comando sopra mostra l'elenco dei lavori nel crontab
file. Per aggiungere un nuovo cron job a crontab
, digitare:
crontab -e
Il comando precedente mostrerà il crontab
file in cui è possibile pianificare un lavoro. Diciamo che hai un file chiamato hello.py
che assomiglia a:
stampa "Hello World"
Ora, per programmare un cron job per eseguire lo script sopra riportato in output su un altro file, è necessario aggiungere la seguente riga di codice:
50 19 * * * python ciao.pia >> a.txt
La riga di codice precedente pianifica l'esecuzione del file con l'output in un file chiamato a.txt
. I numeri che precedono il comando da eseguire definiscono l'orario di esecuzione del lavoro. La sintassi dei tempi ha cinque parti:
Gli asterischi (*) nella sintassi dei tempi indicano che verrà eseguito ogni volta.
python-crontab
è un modulo Python che fornisce accesso ai cron jobs e ci consente di manipolare il crontab
file dal programma Python. Automatizza il processo di modifica del file crontab
file manualmente. Per iniziare python-crontab
, è necessario installare il modulo usando pip:
pip installa python-crontab
Una volta che hai python-crontab
installato, importalo nel programma python.
da crontab importare CronTab
Usiamo il python-crontab
modulo per scrivere il nostro primo cron job. Crea un programma Python chiamato writeDate.py
. Dentro writeDate.py
, aggiungi il codice per stampare la data e l'ora correnti su un file. Ecco come writeDate.py
guarderei:
importare datetime con open ('dateInfo.txt', 'a') come outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))
Salva le modifiche precedenti.
Creiamo un altro programma Python che pianificherà il writeDate.py
Programma Python da eseguire ogni minuto. Crea un file chiamato scheduleCron.py
.
Importa il crontab
modulo nel scheduleCron.py
programma.
da crontab importare CronTab
Usando il crontab
modulo, accediamo al sistema crontab
.
my_cron = CronTab (utente = 'nome utente')
Il comando precedente crea un accesso al sistema crontab
dell'utente. Andiamo a scorrere i lavori cron e dovresti essere in grado di vedere qualsiasi cron job creato manualmente per il nome utente particolare.
per lavoro in my_cron: processo di stampa
Salva le modifiche e prova ad eseguire il scheduleCron.py
e dovresti avere l'elenco di lavori cron, se ce ne sono, per l'utente in particolare. Dovresti essere in grado di vedere qualcosa di simile all'esecuzione del programma di cui sopra:
50 19 * * * python hello.py >> a.txt # alle 5 del mattino di ogni settimana con:
Andiamo avanti con la creazione di un nuovo cron job usando il crontab
modulo. Puoi creare un nuovo cron usando il nuovo metodo e specificando il comando da eseguire.
job = my_cron.new (command = 'python /home/jay/writeDate.py')
Come puoi vedere nella riga di codice sopra, ho specificato il comando da eseguire quando viene eseguito il job cron. Una volta ottenuto il nuovo cron job, è necessario pianificare il cron job.
Pianifichiamo che il cron job venga eseguito ogni minuto. Quindi, in un intervallo di un minuto, la data e l'ora correnti saranno aggiunte al dateInfo.txt
file. Per pianificare il lavoro per ogni minuto, aggiungi la seguente riga di codice:
job.minute.every (1)
Una volta pianificato il lavoro, è necessario scrivere il lavoro nella scheda cron.
my_cron.write ()
Ecco il scheduleCron.py
file:
da crontab import CronTab my_cron = CronTab (user = 'roy') job = my_cron.new (comando = 'python /home/roy/writeDate.py') job.minute.every (1) my_cron.write ()
Salvare le modifiche precedenti ed eseguire il programma Python.
python scheduleCron.py
Una volta eseguito, controlla il crontab
file usando il seguente comando:
crontab -l
Il comando precedente dovrebbe visualizzare il processo cron appena aggiunto.
* * * * * python /home/roy/writeDate.py
Attendi un minuto e controlla la tua home directory e dovresti essere in grado di vedere il dateInfo.txt
file con la data e l'ora correnti. Questo file verrà aggiornato ogni minuto e la data e l'ora correnti verranno aggiunte al contenuto esistente.
Per aggiornare un cron job esistente, devi trovare il cron job usando il comando o usando un Id. È possibile avere un ID impostato su un processo cron sotto forma di commento durante la creazione di un processo cron utilizzando python-crontab
. Ecco come è possibile creare un cron job con un commento:
job = my_cron.new (command = 'python /home/roy/writeDate.py', comment = "dateinfo")
Come visto nella riga di codice sopra, un nuovo job cron è stato creato usando il commento come dateinfo
. Il commento sopra può essere usato per trovare il lavoro cron.
Quello che devi fare è scorrere tutti i lavori in crontab
e controlla il lavoro con il commento dateinfo
. Ecco il codice:
my_cron = CronTab (user = 'roy') per il lavoro in my_cron: processo di stampa
Controlla il commento di ogni lavoro usando il job.comment
attributo.
my_cron = CronTab (utente = 'jay') per lavoro in my_cron: se job.comment == 'dateinfo': lavoro di stampa
Una volta ottenuto il lavoro, riprogrammare il cron job e scrivere al cron. Ecco il codice completo:
da crontab import CronTab my_cron = CronTab (user = 'roy') per lavoro in my_cron: if job.comment == 'dateinfo': job.hour.every (10) my_cron.write () stampa 'Cron job modificato con successo'
Salvare le modifiche precedenti ed eseguire il scheduleCron.py
file. Elenca gli articoli nel crontab
file usando il seguente comando:
crontab -l
Dovresti essere in grado di vedere il cron job con orario di programmazione aggiornato.
* * / 10 * * * python /home/jay/writeDate.py # dateinfo
python-crontab
fornisce metodi per cancellare o rimuovere lavori da crontab
. È possibile rimuovere un cron job dal crontab
in base alla pianificazione, al commento o al comando.
Diciamo che vuoi cancellare il lavoro con un commento dateinfo
dal crontab
. Il codice sarebbe:
da crontab import CronTab my_cron = CronTab (user = 'roy') per lavoro in my_cron if job.comment == 'dateinfo': my_cron.remove (job) my_cron.write ()
Allo stesso modo, per rimuovere un lavoro basato su un commento, puoi chiamare direttamente il rimuovere
metodo sul my_cron
senza alcuna iterazione. Ecco il codice:
my_cron.remove (comment = 'dateinfo')
Per rimuovere tutti i lavori dal crontab
, puoi chiamare il Rimuovi tutto
metodo.
my_cron.remove_all ()
Una volta fatto con le modifiche, scriverlo al cron usando il seguente comando:
my_cron.write ()
Per verificare quante volte il tuo lavoro viene eseguito utilizzando python-crontab
, puoi usare il frequenza
metodo. Una volta che hai il lavoro, puoi chiamare il metodo chiamato frequenza
, che restituirà il numero di volte in cui il lavoro viene eseguito in un anno.
da crontab import CronTab my_cron = CronTab (user = 'roy') per lavoro in my_cron: print job.frequency ()
Per verificare il numero di volte in cui il lavoro viene eseguito in un'ora, è possibile utilizzare il metodo frequency_per_hour
.
my_cron = CronTab (user = 'roy') per il lavoro in my_cron: print job.frequency_per_hour ()
Per verificare la frequenza del lavoro in un giorno, è possibile utilizzare il metodo frequency_per_day
.
python-crontab
fornisce la funzionalità per verificare la pianificazione di un particolare lavoro. Per far funzionare questo, avrai bisogno del croniter
modulo da installare sul tuo sistema. Installare croniter
usando pip:
pip installa croniter
Una volta che hai croniter
installato, chiamare il metodo di pianificazione sul lavoro per ottenere la pianificazione del lavoro.
sch = job.schedule (date_from = datetime.datetime.now ())
Ora puoi ottenere il programma di lavoro successivo utilizzando il Get_Next
metodo.
stampa sch.get_next ()
Ecco il codice completo:
importare datetime da crontab import CronTab my_crons = CronTab (user = 'jay') per lavoro in my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) print sch.get_next ()
Puoi anche ottenere il programma precedente usando il get_prev
metodo.
In questo tutorial hai visto come iniziare a utilizzare python-crontab
per accedere al sistema crontab
da un programma Python. utilizzando python-crontab
, è possibile automatizzare il processo manuale di creazione, aggiornamento e pianificazione dei lavori cron.
Hai usato? python-crontab
o qualsiasi altra libreria per l'accesso al sistema crontab
? Mi piacerebbe sentire i tuoi pensieri. Fateci sapere i vostri suggerimenti nei commenti qui sotto.
Impara Python con la nostra guida completa al tutorial su Python, sia che tu stia appena iniziando o che sei un programmatore esperto che cerca di imparare nuove abilità.