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.
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:
Les astérisques (*) dans la syntaxe de chronométrage indiquent qu'il sera exécuté à chaque fois.
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
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..
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
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 ()
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
.
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.
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.
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..