Planification des tâches avec crontab
Avant de que je me décide à utiliser GNU/Linux je lisais souvent sur les forums généralistes que je fréquentais à l’époque qu’il y avait pas plus compliqué comme système d’exploitation mais surtout qu’il fallait lui consacrer beaucoup de temps au quotidien ! Pas besoin de vous dire que tout s’est révélé archi-faux, la gestion et planification des tâches avec cron en est la parfait preuve.
En effet, cron est un utilitaire qui permet la planification et l’exécution de tâches (programmes, scripts) à un moment spécifié. Pour utiliser cron il suffit d’éditer les fichier crontab se trouvant dans le répertoire /etc (/etc/cron.daily, /etc/cron.hourly, /etc/cron.weekly, /etc/cron.monthly), mais on va pas les éditer directement, c’est fortement déconseillé, mais on va plutôt utiliser la commande crontab -e. Chaque entrée se compose de 5 champs de date et heure suivi de la tâche à exécuter :
mm hh jj MMM JJJ tâche
Où :
- mm correspond au minutes (0 à 59) ;
- hh représente l’heure (0 à 23)
- jj représente le numéro du jour du mois (1 à 31) :
- MMM représente le numéro du mois de l’année (1 à 12) ou l’abréviation du nom du mois : jan, feb, mar … (en anglais);
- JJJ représente le jour de la semaine (0 à 6 où 0 correspond au dimanche) ;
- tâche répresente la commande ou le script qu’on veut exécuter.
Supposant que on a un script backup.py, qui se trouve dans notre /home, et qui nous permet d’effectuer une sauvegarde d’un répertoire et qu’on veut automatiser son exécution quotidiennement à une heure précise, minuit trente par exemple, dans un terminal taper la commande suivante :
$ crontab -e
Comme expliqué tout ci-dessus, cette commande permet d’éditer les tâches cron via <troll> le super méga puissant éditeur Vim </troll>, notre nouvelle entrée va ressembler à ça :
30 0 * * * ~/backup.py
Note : notre script doit avoir les droits d’exécution.
Un autre exemple, vous souhaitez que votre ordinateur vous réveille chaque matin à 6h du lundi au vendredi en jouant un de vos morceaux de musique préféré par exemple :
* 6 * * 1-5 /usr/bin/mpg123 ~/Musiques/heavy_fuel.ogg
Si cool tout ça mais comment faire pour avoir une liste des tâches programmées ou en supprimer mes entrées crontab si je veux ? fastoche :
- crontab -l : pour avoir une liste des tâches planifiées ;
- crontab -r : supprimera toutes les entrée crontab.
Note : dans ce billet je pars du principe que le démon cron est lancé automatiquement lors du démarrage de votre ordinateur pour vérifier son statut tapez cette ligne :
# /etc/init.d/cron status
Sachez enfin qu’il existe des interfaces graphique pour crontab si vous êtes allergique à la ligne de commande comme gCrontab ou gnome-schedule.
Have fun