guide-preparation-vacances/chapitre_1_2.md
2021-07-09 00:49:36 -04:00

3.8 KiB

Programmer l'exécution de scripts

Nous avons maintenant créé le script parfait qui exécute les tâches ennuyantes que nous faisions auparavant manuellement. Maintenant, puisque nous planifions partir en vacances, il faut dire à notre système quand exécuter le script 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, vous êtes ici pour voir un peu de code non ?

cron sur Linux et macOS

Le logiciel cron est inclus par défaut sur la majorité des systèmes macOS et GNU/Linux. 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 au format crontab dans le répertoire /etc/cron.d. Il est aussi possible de mettre le script à exécuter dans un des 4 répertoires suivants

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

Le format des instructions dans un fichier crontab est défini comme dans cette illustration:

*   *   *   *   *   *    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)

Le comportement par défaut est d'exécuter le script à chaque minute. Ensuite, si on veut réduire la fréquence, on spécifie à quel moment exécuter le script.

Par exemple, pour exécuter un script cocktail_aleatoire.sh qui nous envoie une recette de cocktail au hasard à 16h30 chaque vendredi, on configure comme suit.

30  16  *  *  5  jevalideca /home/jevalideca/cocktail_aleatoire.sh

Planificateur de tâches sur Windows

Sur Windows, l'ensemble des tâches peuvent être planifiées depuis le Planificateur de tâches. En exécutant une commande PowerShell, il est possible de configurer une tâche similaire à 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:30 chaque vendredi.

$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"

Une fois la commande exécutée, nous obtenons cette réponse:

TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              cocktail-aleatoire                Ready

Nous pouvons valider le résultat dans la fenêtre du Planificateur de tâches.

Capture d'écran du planificateur de tâches

Conclusion

J'ai présenté deux techniques qui permettent de scripter et de configurer l'exécution automatique de tâches.

Il est maintenant possible de faire travailler ton ordinateur durant tes vacances !