Advertisement
  1. Code
  2. Python
Code

Gestisci i Cron Job usando Python

by
Difficulty:BeginnerLength:MediumLanguages:

Italian (Italiano) translation by Mirko Pizii (you can also view the original English article)

In questo tutorial, imparerai l'importanza dei cron job e perché hai bisogno di loro. Approccerai con python-crontab, un modulo di Python per interagire con il crontab. Imparerai come manipolare i cron job da un programma Python usando il modulo python-crontab.

Cos'è il Cron?

Durante l'amministrazione del sistema, è necessario eseguire sul server dei lavori in background per eseguire delle operazioni di routine. Cron è un sistema di processo che viene utilizzato per eseguire delle attività in background su una routine giornaliera. Cron richiede un file chiamato crontab che contiene una lista di tutte le attività da eseguire in un particolare tempo. Tutti questi lavoro vengono eseguiti in background in un tempo specificato.

Per vedere i cron job attivi sul tuo sistema, vai sul tuo terminale e digita:

Il comando sopra mostra una lista delle attività nel file crontab. Per aggiungere un nuovo cron job al crontab, digita:

Il comando sopra mostrerà il file crontab dove puoi schedulare un'attività. Diciamo che hai un file chiamato hello.py che sarà così:

Ora, per schedulare un cron job per eseguire lo script sopra e mostrarlo in output ad un altro file, devi aggiungere questa seguente linea di codice:

La riga sopra schedula l'esecuzione del file che inserisce il suo output in un file chiamato a.txt. I numeri prima del comando definiscono il tempo di esecuzione dell'attività. La sintassi del tempo ha cinque parti:

  1. minuto
  2. ora
  3. giorno del mese
  4. mese
  5. giorno della settimana

Asterischi(*) nella sintassi indicano che verrà eseguito sempre.

Introduzione a Python-Crontab

python-crontab è un modulo Python in cui fornisce l'accesso ai cron job e ci permette di manipolare il file crontab da un programma Python Automatizza il processo di modifica manuale del file crontab. Per cominciare con python-crontab, devi installare il modulo usando pip:

Una volta che hai installato python-crontab, importalo nel programma python.

Scrivi il tuo primo cron job

Usiamo il modulo python-crontab per scrivere il nostro primo cron job. Crea un programma Python chiamato writeDate.py. All'interno di writeDate.py, aggiungi il codice per stampare la data e l'ora attuale in un file. Questo è come writeDate.py dovrebbe apparire:

Salvare le modifiche di sopra.

Creiamo un altro programma Python che schedulerà il programma Python writeDate.py e lo farà eseguire ogni minuto. Creiamo un file chiamato scheduleCron.py.

Importa il modulo CronTab dentro il programma scheduleCron.py.

Usa il modulo CronTab, accediamo al sistema crontab.

Il comando sopra, crea un accesso al sistema crontab dell'utente. Iteriamo ora attraverso i cron job e dovresti vedere tutti i cron job creati manualmente per un utente specifico.

Salva le modifiche e prova ad eseguire scheduleCron.py e dovresti avere avere la lista dei cron job, se ci sono, per un utente specifico. Dovresti essere in grado di vedere qualcosa di simile sull'esecuzione del programma di sopra:

Spostiamoci sulla creazione di un nuovo cron job usando il modulo CronTab. Puoi creare un nuovo cron usando questo nuovo metodo e specificando il comando da essere eseguito.

Come puoi vedere nella linea di codice di sopra, ho specificato il comando da eseguire quando il cron job viene eseguito. Una volta che hai il nuovo cron job, puoi schedularlo.

Scheduliamo ora il nuovo cron job facendolo eseguire ogni minuto. Quindi, in un intervallo di un minuto, la data e l'ora attuale dovrebbero essere aggiunti al file dateInfo.txt. Per schedulare l'attività per ogni minuto, aggiungi questa seguente linea di codice:

Una volta che hai scedulato l'attività, devi scrivere l'attività sul cron tab.

Questo è il file scheduleCron.py:

Salva le modifiche ed esegui il programma Python.

Una volta che è stato eseguito, controlla il file crontab usando questo comando:

Il comando di sopra dovrebbe mostrare il nuovo cron job aggiunto.

Aspetta un minuto e controlla sulla tua directory home e dovresti essere in grado di vedere il file dateInfo.txt con la data e ora attuale. Questo file sarà aggiornato ogni minuto e la data e ora attuale sarà aggiunta al contenuto già esistente.

Aggiornare un cron job esistente

Per aggiornare un cron job esistente, devi trovare il cron job usando il comando o usando un Id. Puoi avere l'Id impostato al cron job in forma di commento quando crei un cron job usando python-crontab. Questo è come puoi creare un cron job con un commento:

Come puoi vedere nella riga di sopra, un nuovo cron job è stato creato usando il commento come dateinfo. Il commento di sopra può essere usato per cercare il cron job.

Quello che devi fare è iterare attraverso tutte le attività in crontab e controllare se l'attività ha il commento dateinfo. Questo è il codice:

Controlla per ogni commento dell'attività usando l'attributo job.comment.

Una volta che hai l'attività, schedula di nuovo il cron job e scrivilo sul cron. Questo è il codice completo:

Salva i cambiamenti ed esegui il file scheduleCron.py. Ottieni una lista degli elementi nel file crontab usando questo comando:

Dovresti essere in grado di vedere il cron job con il nuovo orario schedulato.

Pulire le attività dal crontab

python-crontab fornisce metodi per pulire o rimuovere attività dal crontab. Puoi rimuovere un cron job dal crontab basato sulla schedulazione, commento o comando.

Diciamo che vogliamo pulire l'attività con il commento dateinfo dal crontab. Il codice sarà:

Similmente, per rimuovere un'attività basato su un commento, puoi direttamente chiamare il metodo remove su my_cron senza alcuna iterazione. Questo è il codice:

Per rimuovere tutte le attività dal crontab, puoi chiamare il metodo remove_all.

Una volta finito con i cambiamenti, scrivi di nuovo sul cron usando questo comando:

Calcolare la frequenza dell'attività

Per controllare quante volte la tua attività viene eseguita usando python-crontab, puoi usare il metodo frequency. Una volta che hai l'attività, puoi chiamare il metodo nominato frequency che tornerà il numero di volte che l'attività viene eseguito in un anno.

Per controllare il numero di volte che un'attività viene eseguita in un'ora, puoi usare il metodo frequency_per_hour.

Per controllare la frequenza dell'attività in un giorno, puoi usare il metodo frequency_per_day.

Controllare la schedulazione dell'attività

python-crontab fornisce la funzionalità per controllare la schedulazione per un'attività specifica. Per questo, per funzionare, dovrai avere installato sul tuo sistema il modulo croniter. Installa croniter usando pip:

Una volta che hai installato croniter, chiama il metodo di schedulazione dell'attività per avere la sua schedulazione.

Ora puoi ottenere la prossima attività schedulata usando il metodo get_next.

Questo è il codice completo:

Puoi anche ottenere lo schedule precedente usando il metodo get_prev.

Ricapitolando

In questo tutorial, hai visto come partire usando python-crontab per accedere al crontab del sistema da un programma Python. Usando python-crontab, puoi automatizzare il processo manuale di creazione, aggiornamento e schedulazione delle attività.

Hai già usato python-crontab o altre librerie per accedere al crontab del sistema? Mi piacerebbe sentire i tuoi pareri. Facci sapere tuoi suggerimenti nei commenti sotto.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.