Gestion des tâches cron à l'aide de Python

Dans ce tutoriel, vous apprendrez l’importance des emplois cron et pourquoi vous en avez besoin. Vous allez regarder python-crontab, un module Python pour interagir avec le crontab. Vous apprendrez à manipuler des tâches cron à partir d’un programme Python en utilisant le python-crontab module.

Qu'est-ce que Cron??

Lors de l'administration du système, il est nécessaire d'exécuter des tâches en arrière-plan sur un serveur pour exécuter des tâches de routine. Cron est un processus système utilisé pour exécuter des tâches en arrière-plan de manière routinière. Cron nécessite un fichier appelé crontab qui contient la liste des tâches à exécuter à un moment donné. Tous ces travaux sont exécutés en arrière-plan à l'heure spécifiée.

Pour afficher les tâches cron en cours d'exécution sur votre système, accédez à votre terminal et tapez:

crontab -l

La commande ci-dessus affiche la liste des tâches dans le crontab fichier. Pour ajouter un nouveau travail cron au crontab, tapez:

crontab -e

La commande ci-dessus affichera le crontab fichier où vous pouvez planifier un travail. Disons que vous avez un fichier appelé bonjour.py qui ressemble à:

imprimer "Bonjour le monde"

Maintenant, pour planifier un travail cron afin d'exécuter le script ci-dessus afin de le générer dans un autre fichier, vous devez ajouter la ligne de code suivante:

50 19 * * * python bonjour.py >> a.txt

La ligne de code ci-dessus planifie l’exécution du fichier avec sortie dans un fichier appelé a.txt. Les chiffres précédant la commande à exécuter définissent l'heure d'exécution du travail. La syntaxe de synchronisation comprend cinq parties:

  1. minute
  2. heure
  3. jour du mois
  4. mois
  5. jour de la semaine

Les astérisques (*) dans la syntaxe de chronométrage indiquent qu'il sera exécuté à chaque fois. 

Présentation de Python-Crontab 

python-crontab est un module Python qui donne accès aux tâches cron et nous permet de manipuler le crontab fichier du programme Python. Il automatise le processus de modification de la crontab déposer manuellement. Pour commencer avec python-crontab, vous devez installer le module en utilisant pip:

pip installer python-crontab

Une fois que tu as python-crontab installé, importez-le dans le programme python.

depuis crontab import CronTab

Écrire votre premier job

Utilisons le python-crontab module pour écrire notre premier travail cron. Créez un programme Python appelé writeDate.py. À l'intérieur writeDate.py, ajoutez le code pour imprimer la date et l'heure actuelles dans un fichier. Voici comment writeDate.py voudrais regarder:

importer date / heure avec open ('dateInfo.txt', 'a') en tant que outFile: outFile.write ('\ n' + str (datetime.datetime.now ()))

Enregistrer les modifications ci-dessus.

Créons un autre programme Python qui planifiera la writeDate.py Programme Python à exécuter à chaque minute. Créez un fichier appelé scheduleCron.py.

Importer le CronTab module dans le scheduleCron.py programme.

depuis crontab import CronTab

En utilisant le CronTab module, accédons au système crontab.

my_cron = CronTab (utilisateur = 'votre nom d'utilisateur')

La commande ci-dessus crée un accès au système crontab de l'utilisateur. Parcourons les tâches cron et vous devriez pouvoir voir toutes les tâches cron créées manuellement pour le nom d'utilisateur particulier..

pour le travail dans my_cron: travail d'impression

Enregistrez les modifications et essayez d’exécuter le scheduleCron.py et vous devriez avoir la liste des tâches cron, le cas échéant, pour cet utilisateur particulier. Vous devriez pouvoir voir quelque chose de similaire lors de l'exécution du programme ci-dessus:

50 19 * * * python hello.py >> a.txt # à 5 heures du matin toutes les semaines avec:

Passons à la création d’un nouveau travail cron en utilisant le CronTab module. Vous pouvez créer un nouveau cron en utilisant la nouvelle méthode et en spécifiant la commande à exécuter..

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

Comme vous pouvez le voir dans la ligne de code ci-dessus, j'ai spécifié la commande à exécuter lors de l'exécution du travail cron. Une fois que vous avez le nouveau travail cron, vous devez planifier le travail cron.. 

Planifions l'exécution du travail cron à chaque minute. Ainsi, dans un intervalle d'une minute, la date et l'heure actuelles seraient ajoutées à la dateInfo.txt fichier. Pour planifier le travail à chaque minute, ajoutez la ligne de code suivante:

job.minute.every (1)

Une fois le travail planifié, vous devez l'écrire dans l'onglet cron..

mon_cron.write ()

Voici la scheduleCron.py fichier:

from crontab import CronTab mon_cron = CronTab (utilisateur = 'roy') travail = mon_cron.new (commande = 'python /home/roy/writeDate.py') job.minute.every (1) mon_cron.write ()

Enregistrez les modifications ci-dessus et exécutez le programme Python.

python scheduleCron.py

Une fois qu'il est exécuté, vérifiez la crontab fichier en utilisant la commande suivante:

crontab -l

La commande ci-dessus devrait afficher le travail cron nouvellement ajouté..

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

Attendez une minute et vérifiez votre répertoire personnel et vous devriez pouvoir voir le dateInfo.txt fichier avec la date et l'heure actuelles. Ce fichier sera mis à jour toutes les minutes et la date et l'heure actuelles seront ajoutées au contenu existant..

Mise à jour d'un travail Cron existant

Pour mettre à jour un travail cron existant, vous devez le trouver à l'aide de la commande ou à l'aide d'un ID. Vous pouvez définir un identifiant sur un travail cron sous la forme d'un commentaire lors de la création d'un travail cron à l'aide de python-crontab. Voici comment créer un travail cron avec un commentaire:

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

Comme indiqué dans la ligne de code ci-dessus, un nouveau travail cron a été créé avec le commentaire comme dateinfo. Le commentaire ci-dessus peut être utilisé pour trouver le travail cron.

Ce que vous devez faire est de parcourir tous les emplois dans crontab et vérifier le travail avec le commentaire dateinfo. Voici le code:

 my_cron = CronTab (user = 'roy') pour le travail dans my_cron: travail d'impression

Vérifiez le commentaire de chaque travail en utilisant le job.comment attribut.

 my_cron = CronTab (user = 'jay') pour le travail dans my_cron: if job.comment == 'dateinfo': travail d'impression

Une fois que vous avez le travail, reprogrammez-le et écrivez-le. Voici le code complet:

from crontab import CronTab my_cron = CronTab (user = 'roy') pour le travail dans my_cron: if job.comment == 'dateinfo': job.hour.every (10) my_cron.write () print 'Le travail Cron a été modifié avec succès'

Enregistrez les modifications ci-dessus et exécutez la scheduleCron.py fichier. Répertoriez les articles dans le crontab fichier en utilisant la commande suivante:

crontab -l

Vous devriez pouvoir voir le travail cron avec le temps de planification mis à jour.

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

Suppression des travaux de Crontab

python-crontab fournit des méthodes pour effacer ou supprimer des travaux de crontab. Vous pouvez supprimer un travail cron de la crontab basé sur le programme, le commentaire ou la commande.

Disons que vous voulez effacer le travail avec un commentaire dateinfo du crontab. Le code serait:

depuis crontab import CronTab my_cron = CronTab (utilisateur = 'roy') pour le travail dans mon_cron si job.comment == 'dateinfo': mon_cron.remove (travail) mon_cron.write ()

De même, pour supprimer un travail basé sur un commentaire, vous pouvez appeler directement le retirer méthode sur le mon_cron sans aucune itération. Voici le code:

my_cron.remove (comment = 'dateinfo')

Pour supprimer tous les emplois du crontab, vous pouvez appeler le Enlever tout méthode.

my_cron.remove_all ()

Une fois les modifications apportées, recopiez-les dans le cron à l'aide de la commande suivante:

mon_cron.write ()

Calcul de la fréquence des tâches

Pour vérifier combien de fois votre travail est exécuté en utilisant python-crontab, vous pouvez utiliser le la fréquence méthode. Une fois que vous avez le travail, vous pouvez appeler la méthode appelée la fréquence, qui renverra le nombre de fois que le travail est exécuté dans une année.

depuis crontab import CronTab my_cron = CronTab (user = 'roy') pour le travail dans my_cron: print job.frequency ()

Pour vérifier le nombre de fois que le travail est exécuté en une heure, vous pouvez utiliser la méthode fréquence_per_heure.

my_cron = CronTab (user = 'roy') pour le travail dans my_cron: print job.frequency_per_hour ()

Pour vérifier la fréquence des tâches dans une journée, vous pouvez utiliser la méthode fréquence_per_jour

Vérification du calendrier des travaux

python-crontab fournit la fonctionnalité pour vérifier le planning d'un travail particulier. Pour que cela fonctionne, vous aurez besoin de la croniter module à installer sur votre système. Installer croniter en utilisant pip:

pip installer croniter

Une fois que tu as croniter installé, appelez la méthode de planification sur le travail pour obtenir la planification du travail.

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

Maintenant, vous pouvez obtenir le prochain emploi du temps en utilisant le get_next méthode.

print sch.get_next ()

Voici le code complet:

importer date et heure depuis la crontab import CronTab my_crons = CronTab (utilisateur = 'jay') pour le travail dans my_crons: sch = job.schedule (date_from = datetime.datetime.now ()) print sch.get_next ()

Vous pouvez même obtenir le calendrier précédent en utilisant le get_prev méthode.

Envelopper

Dans ce tutoriel, vous avez vu comment commencer à utiliser python-crontab pour accéder au système crontab à partir d'un programme Python. En utilisant python-crontab, vous pouvez automatiser le processus manuel de création, de mise à jour et de planification des tâches cron. 

Avez-vous utilisé python-crontab ou toute autre bibliothèque pour accéder au système crontab? Je serais ravi d'entendre vos pensées. Faites-nous savoir vos suggestions dans les commentaires ci-dessous.

Apprendre le python

Apprenez Python avec notre guide complet de tutoriel sur Python, que vous soyez débutant ou que vous soyez un codeur chevronné cherchant à acquérir de nouvelles compétences..