J'en ai deux Python scripts
sur ma machine que je souhaite exécuter deux fois par jour sur une période spécifique. Comment automatiser cette tâche? Étant donné que je serai loin de chez moi et donc de mon ordinateur pendant un certain temps, je veux les télécharger sur un site et en être exécuté automatiquement sans que je fasse quoi que ce soit.
Comment puis-je faire ceci?
Vous pouvez utiliser cron
pour cela si vous êtes sur une machine Linux. Cron est un démon système utilisé pour exécuter des tâches spécifiques à des moments spécifiques.
cron
fonctionne sur le principe de crontab
, un fichier texte avec une liste de commandes à exécuter à des heures spécifiées. Il suit un format spécifique, qui peut être expliqué en détail dans man 5 crontab
Chacune des sections est séparée par un espace, la dernière section contenant un ou plusieurs espaces. Aucun espace n'est autorisé dans les sections 1-5, seulement entre elles. Les sections 1 à 5 sont utilisées pour indiquer quand et à quelle fréquence vous souhaitez que la tâche soit exécutée. Voici comment se présente une tâche cron:
minute (0-59), heure (0-23, 0 = minuit), jour (1-31), mois (1-12), jour de semaine (0-6, 0 = dimanche), commande
01 04 1 1 1 /usr/bin/somedirectory/somecommand
L'exemple ci-dessus exécutera/usr/bin/somedirectory/somecommand à 4 h 01 le 1er janvier et tous les lundis de janvier. Un astérisque (*) peut être utilisé pour que chaque instance (chaque heure, chaque jour de la semaine, chaque mois, etc.) d'une période soit utilisée. Code:
01 04 * * * /usr/bin/somedirectory/somecommand
L'exemple ci-dessus exécutera/usr/bin/somedirectory/somecommand à 4 h 01 chaque jour de chaque mois.
Les valeurs séparées par des virgules peuvent être utilisées pour exécuter plusieurs instances d'une commande particulière au cours d'une période. Les valeurs séparées par des tirets peuvent être utilisées pour exécuter une commande en continu. Code:
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
L'exemple ci-dessus exécutera /usr/bin/somedirectory/somecommand
à 01 et 31 après les heures de 4h00 et 5h00 du 1er au 15 janvier de chaque janvier et juin.
Le texte "/ usr/bin/somedirectory/somecommand" dans les exemples ci-dessus indique la tâche qui sera exécutée aux heures spécifiées. Il est recommandé d'utiliser le chemin d'accès complet aux commandes souhaitées, comme indiqué dans les exemples ci-dessus. Entrer which somecommand
dans le terminal pour trouver le chemin complet vers somecommand. Le crontab commencera à fonctionner dès qu'il sera correctement édité et enregistré.
Vous voudrez peut-être exécuter un script un certain nombre de fois par unité de temps. Par exemple, si vous souhaitez l'exécuter toutes les 10 minutes, utilisez l'entrée crontab suivante (s'exécute sur des minutes divisibles par 10: 0, 10, 20, 30, etc.)
*/10 * * * * /usr/bin/somedirectory/somecommand
ce qui équivaut également au plus lourd
0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand
Sous Windows, j'ai trouvé deux solutions.
Étape 1
Créez un fichier .bat pour indiquer la commande que vous souhaitez exécuter et le fichier de script qui sera exécuté, par exemple:
start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py
Étape 2
Ouvrez le Planificateur de tâches et cliquez sur la bibliothèque du Planificateur de tâches pour voir les tâches en cours qui sont exécutées. Cliquez sur l'option Créer une tâche.
Étape 3
Dans l'onglet Général, mettez le nom de votre nouvelle tâche et cliquez sur l'option Run whether user is logged on or not
, Cochez l'option Run with highest privileges
Et assurez-vous de configurer la version appropriée de votre système d'exploitation (dans mon cas, j'ai choisi Windows 7, Windows Server 2008 R2
.
Étape 4
Dans l'onglet Actions, cliquez sur le bouton Nouveau et saisissez ce qui suit:
Dans Program/Scripts vous devez rechercher le chemin Powershell que le Planificateur de tâches invoquera pour exécuter le fichier .bat. Dans mon cas, mon chemin Powershell était: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Dans Ajouter des arguments (facultatif) vous devez taper le chemin du fichier qui sera exécuté par Powershell. Dans mon cas, le chemin était:
C:\Users\userX\Desktop\run_the_bat_file.bat
Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du fichier .bat, c'est-à-dire:
C:\Users\userX\Desktop\
Étape 5
Cliquez sur l'onglet Déclencheurs et sélectionnez la fréquence à laquelle vous souhaitez exécuter cette tâche.
Étape 6
Enfin, testez votre tâche pour voir si elle fonctionne vraiment en la sélectionnant dans la bibliothèque du Planificateur de tâches et en cliquant sur l'option Exécuter.
Étape 1
Ouvrez le Planificateur de tâches et cliquez sur la bibliothèque du Planificateur de tâches pour voir les tâches en cours qui sont exécutées. Cliquez sur l'option Créer une tâche.
Étape 2
Dans l'onglet Général, mettez le nom de votre nouvelle tâche et cliquez sur l'option Run whether user is logged on or not
, Cochez l'option Run with highest privileges
Et assurez-vous de configurer la version appropriée de votre système d'exploitation (dans mon cas, j'ai choisi Windows 7, Windows Server 2008 R2
.
Étape 3
Dans l'onglet Actions, cliquez sur le bouton Nouveau et saisissez ce qui suit:
Dans Program/Scripts vous devez rechercher le chemin Python.exe que le Planificateur de tâches invoquera pour exécuter le script python. Dans mon cas, mon chemin Python.exe était: C:\Users\userX\python.exe
Dans Ajouter des arguments (facultatif) vous devez seulement taper le nom de votre script python. Dans mon cas, le chemin était:
Permissions_dump.py
Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du script python, c'est-à-dire:
C:\Users\userX\PycharmProjects\1099_vendors_costs
Étape 4
Cliquez sur l'onglet Déclencheurs et sélectionnez la fréquence à laquelle vous souhaitez exécuter cette tâche.
Étape 5
Enfin, testez votre tâche pour voir si elle fonctionne vraiment en la sélectionnant dans la bibliothèque du Planificateur de tâches et en cliquant sur l'option Exécuter.
Si vous utilisez la bibliothèque Cx_Freeze pour convertir un .py en .exe et que vous souhaitez utiliser le planificateur de tâches pour automatiser cette tâche, vous devez suivre ces étapes:
Étape 1
Cliquez sur Créer une tâche, puis sur l'onglet Actions pour saisir ce qui suit:
Dans Program/Scripts vous devez rechercher le chemin C:\Windows\Explorer.exe
Que le Planificateur de tâches invoquera pour exécuter le script .exe.
Dans Ajouter des arguments (facultatif) vous devez seulement saisir le nom de votre fichier .exe: CustomerPopulation.exe
Dans Commencez par (facultatif) vous devez taper le chemin du fichier mais sans le nom du fichier .exe, c'est-à-dire:
C:\Users\userX\PycharmProjects\executables
Les références:
Si vous utilisez OSX, alors launchd est le moyen préféré de planifier des tâches. Il y a une CLI OSX pour launchd appelée launchctl mais si vous préférez une interface graphique, ma préférée est launchcontrol .