guide-preparation-vacances/chapitre_1_2.md

53 lines
3 KiB
Markdown
Raw Permalink Normal View History

2021-07-09 04:49:36 +00:00
# Programmer l'exécution de scripts
2021-07-13 23:49:31 +00:00
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](https://fr.wikipedia.org/wiki/Cron) permet de faire sur GNU/Linux et macOS. Sur Windows, c'est le Planificateur de tâches *schtasks.exe*.
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
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 ?
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
## Cron sur Linux et macOS
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
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.
2021-07-09 04:49:36 +00:00
2021-07-13 23:49:31 +00:00
Les instructions pour *cron* sont inscrites dans un fichier spécial *crontab* dans le répertoire */etc/cron.d*.
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
Leur format est défini dans cette illustration :
2021-07-09 04:49:36 +00:00
```{.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)
```
2021-07-12 02:42:06 +00:00
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.
2021-07-09 04:49:36 +00:00
```{.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
2021-07-09 04:49:36 +00:00
2021-07-13 23:49:31 +00:00
Sur Windows, l'ensemble des tâches sont planifiées depuis le Planificateur de tâches. En exécutant une [commande PowerShell](https://docs.microsoft.com/fr-fr/powershell/module/psscheduledjob/about/about_scheduled_jobs?view=powershell-5.1), il est possible de configurer une tâche semblable à la précédente.
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
À 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.
2021-07-09 04:49:36 +00:00
```{.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.
2021-07-12 02:42:06 +00:00
![Capture d'écran du Planificateur de tâches](capture_schtasks_cocktail.png)
2021-07-09 04:49:36 +00:00
## Conclusion
2021-07-12 02:42:06 +00:00
Nous avons vu deux techniques qui permettent de programmer et de configurer l'exécution automatique de tâches.
2021-07-09 04:49:36 +00:00
2021-07-12 02:42:06 +00:00
Il est maintenant possible de faire travailler notre ordinateur durant nos vacances !