Planifier des tâches

Le Raspberry possède, comme d'autres systèmes d'exploitation d'ailleurs, un service pour programmer des tâches ou des scripts et les exécuter à des moments précis (début du mois, tous les mardis, tous les jours à 15h, etc.).
Nous verrons ensemble comment le faire :)

Notion de temps

Avant de commencer à planifier des tâches, il faut savoir que le Raspberry ne possède pas d'horloge temps réel (RTC). Malgré cela, vous obtiendrez la bonne heure si vous tapez la commande date.

Cela est possible parce que le Raspberry synchronise son horloge avec un serveur NTP (Network Time Protocol). Cela veut dire que votre Raspberry doit être connecté à Internet lorsqu'il démarre pour synchroniser son horloge.

Un autre moyen pour le faire c'est d'utiliser une RTC connectée via les GPIO.

Consulter les tâches planifiées

Pour consulter les différentes tâches planifiées, il faut utiliser la commande suivante :

                crontab -l

Ajouter une tâche

Chaque tâche doit être écrite dans une ligne dans le fichier accessible via la commande suivante :

                crontab -e

Une tâche prend la forme suivante : mm hh jj MMM JJJ tâche

Différentes notations sont possibles :

Pour simplifier certaines planifications, il existe des raccourcis :

Exemple :

@monthly tâche

Supprimer les tâches planifiées

Une seule commande permet de vider toute la table des tâches planifiées :

crontab -r

Le résultat de l'exécution

Lorsque la tâche planifiée écrit un résultat, l'action par défaut de cron est d'envoyer ce résultat par mail à l'utilisateur. Or on n'a pas toujours envie d'en recevoir !

Si vous souhaitez sauvegarder le résultat dans un fichier en ajoutant de nouvelles lignes :

* * * * * tâche >> log.txt

Si vous souhaitez sauvegarder aussi bien le résultat que les erreurs :

* * * * * tâche >> log.txt 2>&1

Maintenant si vous souhaitez sauvegarder le résultat et les erreurs dans deux fichiers différents :

* * * * * tâche > log.txt 2> err.txt

Une dernière possibilité est de ne rien sauvegarder :

* * * * * tâche > /dev/null 2>&1

Planifier des tâches globales

Lorsque vous planifiez une tâche, elle n'est exécutée que pour l'utilisateur en cours, pi en l'occurence. Si vous souhaitez exécuter des tâches par l'utilisateur root, il faut accéder au crontab par la commande suivante :

sudo crontab -e

A bientôt :)