Profitez des offres Memoirevive.ch!
CronniX, le planificateur de tâches

Hier, je vous ai présenté le logiciel iComic. Je vous avais alors dit que tous les matins Dilbert, Calvin & Hobbes et Garfield se chargeaient de me mettre de bonne humeur.

Mais vous ne vous imaginez tout de même pas que tous les matins j'allais cliquer pour ouvrir l'application !?!

Je vous rappelle mon adage:

Lorsque tu veux faire une tâche répétitive, pense à faire un script.

En fait j'aurais plutôt dû dire:

Lorsque tu veux faire une tâche répétitive, pense que MacOS X est un UNIX.

Je fais exprès de ne pas mentionner le Terminal car François va attraper des boutons .

Or donc, les Unix possèdent une commande très utile: at.

En anglais, at signifie "à" dans le sens temporel (à deux heures, à midi,...).

Grâce à cette commande, vous pouvez dire à votre système d'exécuter une commande à un moment donné. Ceci sera alors stocké dans le "crontab" et lancé par le "cron". Là, je vois déjà la tête de certains:

Souvenez-vous, je vous avais déjà parlé brièvement de ce "cron" lors de mon article sur l'étrange comportement de Intego Virus Barrier. Je vous avais alors dit que "cron" est un planificateur de tâches. C'est un petit programme qui est lancé au démarrage du système et qui se charge d'exécuter les commandes contenue dans le "crontab". En effet, ce fichier stocke la liste des commandes à exécuter et le moment auquel elles doivent l'être.

Par exemple, tous les Unix ont des tâches de maintenance, qui se résument à nettoyer les fichiers de log, compacter les anciennes données, effacer certains caches, etc... Ces tâches sont au nombre de trois: journalière, hebdomadaire, mensuelle. La tâche journalière est lancée à 3h15 du matin chaque jour, la tâche hebdomadaire tous les samedis à 4h30 et la tâche mensuelle tous les premiers du mois à 5h30.

Pour ajouter vos propres commandes, vous pouvez donc soit utiliser la commande at, soit éditer le crontab. La première méthode sera utile dans le cas d'une commande ponctuelle, tandis que la deuxième méthode impliquera une tâche répétée.

Dans le cas du lancement de iComic ce sera bien entendu l'édition du crontab qui sera conseillée.

Ce fichier crontab se trouve là:

/var/cron/tabs

mais il n'est accessible que par "root", le super-utilisateur. Son édition n'est donc pas aisée.

Heureusement, il y a CronniX:

Vous le trouverez .

CronniX vous propose de vous simplifier l'édition du crontab, grâce à une interface toute jolie, et toute cocoa.

Voyons donc ce que nous obtenons au lancement de ce logiciel:

Votre fenêtre sera très certainement vide. Dans la mienne il y a le lancement de iComic.

La barre d'outils nous propose (de gauche à droite) d'entrer une nouvelle tâche, de supprimer une tâche, d'ouvrir le "crontab" d'un autre utilisateur, de sauvegarder les modifications. Puis CronniX nous indique à qui appartient le "crontab" que nous sommes en train de modifier (dans la capture ci-dessus, c'est le mien). Nous pouvons également accéder au "crontab" système. Pour cela il faut aller dans le menu "Fichier" et sélectionner "Ouvrir le cron du système". Vous verrez alors apparaître les trois tâches de maintenance dont je vous parlais plus haut:

Enfin, le dernier élément de la barre d'outils nous propose de modifier une tâche existante.

Etudions, dans la première capture, la tâche chargée de lancer iComic:

  • Tout d'abord la case cochée indique que cette tâche est activée.
  • Les deux colonnes suivantes nous donnent l'heure à laquelle cette tâche sera exécutée, ici c'est 8h45.
  • L'étoile dans la colonne suivante (J/Moi, le traducteur à fait une petite confusion entre "Moi" et "Mois") précise qu'il n'y a aucune restriction quant au jour du mois auquel il faut lancer cette tâche, a priori elle sera exécutée tous les jours.
  • L'étoile dans la colonne suivante (Moi) nous dit qu'il n'y a aucune restriction quant au mois auquel cette tâche sera exécutée.
  • La colonne J/Sem sélectionne quels jours de la semaine sont concernés par cette tâche. Dans mon cas, j'ai mis tous les jours sauf 6 et 7, soit Samedi et Dimanche. Je suis rarement devant mon ordinateur à 8h45 le week-end. A noter que cette colonne prend le dessus sur la colonne J/Moi qui spécifiait que la tâche se lançait tous les jours.
  • Enfin, la dernière colonne contient la commande à exécuter.

La commande à exécuter est très simple:

/usr/bin/open /Users/redac/fabien/Applications/iComic.app

La commande open simule simplement un double-clic dans le Finder. Elle est donc applicable aussi bien à une application qu'à un document. Elle est suivie du chemin complet vers le fichier à ouvrir, dans mon cas iComic.

Mais ne vous faites pas de soucis, CronniX fait tout ça à votre place.

Planifier l'ouverture d'un fichier

Ajoutons donc une commande en cliquant sur le bouton "Nouveau":

On ne va s'intéresser qu'a l'onglet "Simple". L'onglet "Intervals" est inactif et "Expert" nous est inutile (il permet des réglages plus complets que nous n'aborderons pas ici).

On retrouve en ligne les colonnes que j'ai décrites plus haut. C'est donc ici que vous allez régler le moment auquel la tâche sera exécutée (avec toujours cette confusion entre "moi" et "mois"). Les glissières vous permettent de choisir un chiffre (heure, minute, jour, mois). Si vous cochez la case, le chiffre deviendra alors une étoile, indiquant qu'il n'y a pas de restriction. Pour les jours de la semaine, la traduction est incomplète, mais ça reste logique.

Puis vient la commande à exécuter. Par défaut il met:

echo "Bonne et heureuse année!"

ce qui revient à écrire "Bonne et heureuse année". La commande echo indique en effet d'écrire le message. Vous ne verrez pas ce message apparaître au milieu de votre écran, il sera envoyé vers la console (/Applications/Utilitaires/Console.app).

Ce qui nous intéresse c'est d'ouvrir une application ou un document. Il faut alors simplement cliquer sur le bouton "Parcourir...". Un dialogue apparaîtra alors et vous pourrez aller chercher votre application ou votre document. Le chemin vers ce fichier viendra alors s'inscrire dans le champ commande. Mais cela ne suffit pas, il faut encore ajouter la commande open. Pour cela, cochez simplement la case "Prépondérant /usr/bin/open" et le tour est joué !

Planifier l'exécution d'un Applescript

Les scripts ne sont pas nouveau sur Mac, Applescript existe depuis bien longtemps (depuis le système 7.5). Grâce à Applescript, l'utilisateur peut pratiquement tout contrôler, du fonctionnement d'une application à l'extinction ou la mise en veille du système. Je ne vais pas ici faire un cours sur l'applescript, mais je vais vous montrer comment le combiner avec le Terminal afin d'en planifier l'exécution. Pour ceux que ça intéresse, la documentation complète d'Applescript est disponible sur le site d'Apple.

Prenons comme exemple un script tout simple:

Tell Application "Finder"
        Sleep
End tell

Ce script mettra votre ordinateur en veille.

Le crontab n'accepte que des commandes Unix, pas des commandes Applescript, il est donc impossible de donner ce script tel quel à CronniX. Par contre Apple nous met à disposition une commande pour lancer des Applescripts, cette commande s'appelle osascript. Elle permet d'exécuter un fichier Applescript (créé avec Editeur de Script, qui se trouve dans /Applications/AppleScript) ou d'interpréter directement un code Applescript. Dans notre cas, nous pourrons donc sauver notre Applescript dans un fichier "Mise en veille" et l'exécuter depuis le Terminal ou depuis CronniX en entrant:

osacript "/Users/redac/fabien/Mise en veille"

Pour trouver le chemin complet vers votre fichier, vous pouvez toujours utiliser le bouton "Parcourir..." de CronniX.

Mais pour éviter d'avoir à stocker un fichier "Mise en veille", vous pouvez également passer directement les instructions à osascript grâce à l'option "-e":

osacript -e 'tell application "Finder" to sleep'

Vous remarquerez que j'ai réduit le script afin qu'il tienne sur une ligne (sans retour de chariot). Ceci n'est pas toujours possible et dans ce cas, il faut utiliser plusieurs fois l'option "-e" (un pour chaque nouvelle ligne):

osascript -e 'tell application "Finder"' -e 'sleep' -e 'end tell'

Revenons à présent à la planification de la mise en veille. Vous allez donc créer une nouvelle tâche dans CronniX, sélectionner le moment de l'exécution (par exemple tous les soirs à 22h) et entrer dans le champ commande:

osacript -e 'tell application "Finder" to sleep'

Sans cocher la case "Prépondérant /usr/bin/open" ! Ainsi, votre Mac se mettra automatiquement en veille tous les soirs à 22h.

Cet exemple est très simple, mais ouvre les portes à de nombreuses possibilités. Par exemple:

  • Dire à SpeedDownload de démarrer la file d'attente des téléchargements à 3h du matin puis de mettre le Mac en veille.
  • Faire un backup de vos documents tous les week-ends (par exemple grâce à la commande ditto).
  • télécharger le contenu d'un site web, ou d'un site ftp avec curl ou via un applescript.
  • Synchroniser votre téléphone mobile grâce à iSync.
  • Utiliser la commande applescript: Say "Wake up !" pour transformer votre Mac en réveil matin.
  • ...

A vous de trouver d'autres applications ! La seule limite est votre imagination et la recherche des bons outils et de leur bonne utilisation.

En tout cas, moi je retrouve mon iComic à 8h45 .

4 commentaires
1)
connix
, le 14.08.2005 à 17:10

Monsieur,

Merci pour votre article assez clair sur cRonnix.
Cependant, j’ai été un peu surpris en découvrant cet utilitaire.
Lorsuqe j’ouvre le cron system, j’y retrouve bien 3 lignes, mais aucune d’elle ne fait apparaitre de commande « periodic daily », « perdiodic weekly », periodic monthly ».
A la place, j’ai les commandes « /Library/Application Support/Deja Vu/.daily/dejavu_daily.rb », qui apparement correspondraient à l’ouverture planifiée de l’utilitaire de sauvegarde DEJA VU (INTEGO) que j’utilise.

Dois-je en déduire que mes tâches de maintenances automatiques ne se font plus? Si oui, comment les recréer?

Merci d’avance

connix

2)
Fabien
, le 15.08.2005 à 08:25

Bonjour,

je parie que vous êtes sous 10.4 !

Apple a changé la manière dont les tâches de maintenance étaient exécutées. Donc pas de soucis si elle ne sont plus visibles et sont toujours programmées pour se lancer vers 3 heures du matin.

3)
jaipi
, le 04.11.2007 à 10:17

Bonjour,

Merci pour cette info § Je recherche par en plus le moyen de lancer VLC et de lui dire de lire un fichier a une heure donnée…. Comment ??? Merci

4)
maude
, le 07.06.2011 à 14:38

bonjour, Je ne suis pas une spécialiste mais en observant que mon ordinateur ramait de plus en plus, et après quelques recherches je me suis demandée si les mises à jours automatique s’effectuait bien, J’ai donc téléchargé cronnix pour voir plus clair. Et lorsque je vais dans ouvrir le cron du système rien ne s’affiche dans cronnix. Savez vous pourquoi??Et que pourrais je effectuer pour régler les mises a jour en journée.

Merci par avance.