# Programmer l'exécution de scripts Nous avons créé le script parfait qui automatise les tâches monotones faites auparavant manuellement. Maintenant, puisque nous prévoyons partir en vacances, il faut dire à notre système quand exécuter celui-ci, et à quelle fréquence ! C'est ce que *cron* permet de faire sur GNU/Linux et macOS. Sur Windows, c'est le Planificateur de tâches *schtasks.exe*. Notez qu'il existe aussi des applications graphiques pour chacun de ces systèmes. Mais, nous sommes ici pour voir un peu de code non ? ## Cron sur Linux et macOS La majorité des systèmes macOS et GNU/Linux incluent le logiciel *cron*. Il n'y a donc rien à faire pour l'obtenir. Cependant, il est possible qu'il nécessite des accès additionnels pour bien fonctionner sur macOS. Les instructions pour *cron* sont inscrites dans un fichier spécial `crontab` dans le répertoire`/etc/cron.d`. Leur format est défini dans cette illustration : ```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} * * * * * * script_a_executer.sh | | | | | | | | | | | +--- nom utilisateur | | | | +----- jour de la semaine (0-6) (Dimanche=0) | | | +------- mois (1-12) | | +--------- jour du mois (1-31) | +----------- heure (0-23) +------------- minutes (0-59) ``` Par exemple, pour exécuter un script `cocktail_aleatoire.sh` qui nous envoie une recette de cocktail au hasard à 16 h 30 chaque vendredi, nous le configurons comme suit. ```{.bash linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} 30 16 * * 5 jevalideca /home/jevalideca/cocktail_aleatoire.sh ``` ## Planificateur de tâches sur Windows Sur Windows, l'ensemble des tâches sont planifiées depuis le Planificateur de tâches. En exécutant une commande PowerShell, il est possible de configurer une tâche semblable à la précédente. À partir d'une session PowerShell, la séquence de commandes suivante configurera l'exécution du programme `cocktail_aleatoire.bat` à 16 h 30 chaque vendredi. ```{.powershell linenos="true" breaklines="true" tabsize="2" fontsize="\small" bgcolor="turquoisefonce!10!white"} $action = New-ScheduledTaskAction -Execute 'C:\Users\jevalideca\scripts\cocktail_aleatoire.bat' $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 4:30pm Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "cocktail-aleatoire" ``` Nous pouvons valider le résultat dans la fenêtre du Planificateur de tâches. ![Capture d'écran du Planificateur de tâches](capture_schtasks_cocktail.png) ## Conclusion Nous avons vu deux techniques qui permettent de programmer et de configurer l'exécution automatique de tâches. Il est maintenant possible de faire travailler notre ordinateur durant nos vacances !