Automatiser Mac OS X

La Crontab

Pourquoi faire seul, ce que Mac OS X peut faire pour nous ?
Première publication : 9 août 2004.
Mise en ligne: 8 mai 2006.
Modifié le : 12 mai 2006.
Par Captain_X
La Crontab, Terminal, , Mac OS X, , root, , Shell, , Commande, , cron, , Crontab

Sauvegarde, maintenance, ou n’importe quelle opération redondante que l’on fait tous les jours, toutes les semaines, péniblement, à la main. Pourquoi ne pas les automatiser grâce aux propriétés CRON de Mac OS X.

Qu’est-ce que Cron

La définition de cron est : Outil logiciel disponible sous *nix permettant de lancer périodiquement les processus indiqués dans la crontab.

Cron est un programme (un deamon) qui tourne en tâche de fond de votre système, et qui exécute automatiquement une tâche (une application, une commande,...) à intervalles de temps réguliers ou bien à des moments précis. Ce programme lit un fichier qui se nomme la Crontab. Vous pouvez consulter l’activité de ce deamon en tapant la commande top dans le terminal.

Qu’est-ce que la Crontab

La Crontab est un fichier texte qui réside dans un dossier caché du système, et qui liste l’ordonnancement des tâches à effectuer pour chaque utilisateur en fontion du temps qui passe. Il existe une table principale qui appartient à root, puis autant qu’il y a d’utilisateur. En effet, les OS basés sur des noyaux *nix sont multi-utilisateurs, et comme chacun a des besoins différents il paraît logique que chacun puisse s’éditer sa crontab.

Une tâche se présente dans la crontab sous la forme : mm hh jj MMM JJJ tâche > log, ce qui correspond à :

-  mm représente les minutes (de 0 à 59)

-  hh représente l’heure (de 0 à 23)
-  jj représente le numéro du jour du mois (de 1 à 31)

-  MMM représente le numéro du mois (de 1 à 12) ou l’abréviation du nom du mois (jan, feb, mar, apr, ...)

-  JJJ représente l’abréviation du nom du jour ou le chiffre correspondant au jour de la semaine (0 représente le dimanche, 1 représente le lundi, ...)

-  tâche représente la commande ou le script Shell à exécuter

-  log représente le nom d’un fichier dans lequel stocker le journal des opérations. Si la clause > log n’est pas spécifiée, cron enverra automatiquement un mail de confirmation. Pour éviter cela, il suffit de spécifier > /dev/null.

Pour chaque unité de temps (minute/heure/...) les notations sont possibles :

-  * : a chaque unité de temps
-  2-5 : les unités de temps (2,3,4,5)
-  */3 : toutes les 3 unités de temps (0,3,6,...)
-  5,8 : les unités de temps 5 et 8

et comme un exemple vaut mieux qu’un long discours, voici une tâche que l’on aimerait effectuer du lundi au vendredi toute l’année à 23 h 30 min :

30 23 * * 1-5 tâche_prg > log

ou encore tous les premiers du mois à 23h30 min :

30 23 1 * * tâche_prg > log

tâche_prg est soit un script Shell de type script.sh, soit une ligne de commande. Si c’est un fichier. sh vous devez indiquer le chemin vers ce fichier. En Général, on stocke les scripts dans le dossier bin. Par ici pour se rafraîchir la mémoire.

Comment gérer sa Crontab

Il existe 2 méthodes pour gérer la crontab :

  1. via terminal et la commande crontab.
  2. via une application dédiée.

1 - Avec le terminal et la commande crontab

La commande crontab vous permet de travailler sur votre crontab. Mais elle dispose d’options nécessaires à son bon fonctionnement :

  1. -e : qui permet d’éditer les tâches dans la table,
  2. -l : qui permet de lister les tâches actives dans la table,
  3. -r : qui supprime votre table.

Pour créer votre propre crontab, tapez donc : crontab - e . Cela a pour effet de vous ouvrir l’éditeur de texte VI, qui peut être un peu déroutant au départ. Vous devez dans un premier temps passer VI en mode insert. Pour cela il suffit d’appuyer sur la touche a. En bas à gauche de la fenêtre doit être inscrit INSERT, tant que vous n’êtes pas dans cette configuration, il est impossible de saisir quoi que ce soit.

Une fois en mode insert tapez votre programmation comme expliqué ci-dessus.

Pour enregistrer votre crontab il faut faire touche ESC puis taper  :wq. Vous avez enregistrer et quitter VI pour retourner dans votre fenêtre terminal d’origine. Un message apparaît : crontab : installing new crontab.

Il faut maintenant vérifier votre crontab en utilisant la commande de listage crontab -l. Cette commande va lister toutes les tâches programmées dans votre crontab. Si vous éditez pour la première fois votre crontab il ne doit apparaître qu’une seule ligne, celle que vous venez de saisir. Si vous n’avez rien saisi ou que l’opération a échoué vous devez voir apparaître : crontab : no crontab for nom_user.

Pour effacer des tâches vous devez utiliser la commande d’édition (crontab -e) et efffacer la ligne que vous désirez supprimer. Si vous voulez supprimer la table toute entière, il faut utiliser crontab -r qui va effacer le fichier de l’ordinateur. Donc avant de l’utiliser soyez bien sûr de ce que vous faites.

2 - Avec une application dédiée

L’application en question est Cronnix. Cette application est très puissante, car elle permet de façon simplisme de gérer, d’éditer, d’effacer vos tâches. Grâce à une interface graphique claire et évidente. Cette application est un Freeware et localisé en français.

Il existe d’autre applications de ce genre, mais celle-ci est la plus simple et la plus claire.

Voilà il ne reste plus qu’à vous attelez à la tâche si je puis dire. À suivre un script de sauvegarde à intégrer à votre crontab.

Envoyer
L'e-mail du destinataire :

Votre Nom :

Votre e-mail :


 |  Imprimer |  Réagir
Auteur : Captain_X
Bio : Il est né le divin enfant .... Et ca fait un moment !
Captain_X
La Crontab, pour afficher un message
 le 17 juillet 2006 - Menu du forum
 

Bonjour -

J’ai encodé la ligne suivante :
00 16 * * mon-fri root /usr/bin/osascript -e ’say "bonjour."’

A l’heure convenue, le msg. se dit. Mais je souhaiterais en fait, que le message s’affiche, coment puis-je faire ?

Merci...


-  Dimitri

 
La Crontab
Par Plettil le 23 décembre 2005 - Menu du forum
 

Bonsoir,

Je dois être polio, mais je n’arrive pas à mettre la main sur ce @&# crontab général, celui qui nettoie le système. Je suis passé en root, je le cherche, je ne le trouve pas. Quand je fait un crontab -l, il me dit qu’il n’y a pas de crontab pour root ??! Je ne le crois pas...mais je n’arrive pas à le trouver...n’appartient-il pas à root ?

Merci de votre aide, Cordialement, Plettil

 
La Crontab
 le 25 décembre 2005 - Menu du forum
 

pourquoi utliser la crontab de root ??? ceci si tu tiens tellement à en créer une procède ainsi dans ton terminal :

-  sudo -s (password admin requis)
-  crontab -e

et voilà ...

 
La Crontab
Par coyotte11 le 18 décembre 2005 - Menu du forum
 
bonsoir avec "pico" on devrait pouvoir modifier la crontab .... aussi dont et surtout les heures pour lancer cron n’est il pas ?
 
La Crontab
Par Captain_X le 19 décembre 2005 - Menu du forum
 
bien sur, mais il lance VI par défaut...
 
> La Crontab
Par Al1 le 17 août 2004 - Menu du forum
 

C’est bien compliqué tout ça ! On est bien loin du feeling mac et des réseaux Appletalk ! (aïe mes artères !) ;o)))

Pour ma part, ce que j’aimerai faire, c’est
-  me connecter au serveur SAMBA avec le n° de compte XXX (faudra qu’un jour quelqu’un m’explique pourquoi je suis régulièrement déconnecté de ce @&€* de serveur, et ce sera pas ce @&€* d’administrateur réseau que nous avons chez nous qui s’abaissera à nous donner des explications !!!!)
-  copier le dossier XXX situé à XXX sur mon disque dur et le coller dans le dossier XXX sur mon compte SAMBA

Un script shell ? Bon d’accord mais komenkonfai ? J’connais pas la langue, moi ! Oui merci Gunjin de nous expliquer ce qu’est un script shell, mais quand on m’explique l’hébreu en chinois je ne suis pas plus avancé. Mais c’est gentil quand même d’essayer !

Après, quel jour et à quelle heure lancer l’opération, là je saurai faire !!! (... sisi, chuisur !)

Et au passage merci d’exister ... les jeunes (aïe ça recommence !) ;oD

 
> La Crontab
Par Qui êtes-vous ? (optionnel) le 13 mai 2006 - Menu du forum
 

La crontab, c’est en effet désuet. C’est à réserver aux pros de la ligne de commande, aux pros de l’informatique pour des besoins d’exploitation. C’est tout à fait adapté aux serveurs.

Pour l’utilisateur commun, Apple a fait un travail formidable pour rendre des services avancés plus accessibles.

Pour ton cas (copie de données sur un volume distant Samba), je pencherais pour Automator et iCal.

Dans Automator, tu va concevoir le flux opératoire, le lancer à la main, le tester, le déverminer puis tu planifieras son exécution automatique avec iCal (sur alarme d’un événement).

Pour la machine, c’est beaucoup plus lourd mais pour toi, c’est ô combien plus simple. Et de toute façon, la puissance de nos machines est telle aujourd’hui...

 
bye bye crontab, coucou Automator et iCal
 
> La Crontab
Par Arnold le 17 août 2004 - Menu du forum
 

Bonjour,

Merci beaucoup pour votre article très instructif. Vous y dites : "ll existe d’autres applications, mais celle-ci est la plus simple et la plus claire."

A ce propos, moi j’utilise MacJanitor. Vous ne le citez pas. Estimez-vous que CronniX soit meilleur ou plus simple, ou les deux ? Personnellement, je trouve MacJanitor "hyper" simple, comparé à CronniX ;-)

Je n’y connais rien... Ce que j’ai vu, c’est que CronniX permet de programmer ses actions. Ce n’est pas le cas de MacJanitor. En revanche, l’aide de Cronnix est en anglais, et donc assez difficile à comprendre pour moi.

Par exemple, je n’ai pas très bien compris les histoires des cron d’utilisateurs et du système... MacJanitor, lui, ne pose pas de question... Il fait tout le disque, non ?

Pourriez-vous éclairer la lanterne d’un béotien ? Merci d’avance :-)

 
> La Crontab
Par Captain_x le 2 septembre 2004 - Menu du forum
 
macjanitor ne fait que lancer les scripts de maintenances prédéfinis dans le système. La crontab vous permet d’écrire vos propre script et de paramétrer l’heure d’execution. Ce sont 2 choses complémentaires. Mais comparer cronnix à macjanitor c’est comme comparer un éditeur de texte à un pdf en lecture seule . L’article sur la sauvegarde automatique devrait suffir pour prouver la différence flagrante des 2 outils. A Savoir que l’on peut parfaitement lancer ses scripts sans passer par aucune applications, il suffit de laisser tourner sa machine la nuit.
 
Captain_x
 
> La Crontab
Par emynonA le 9 août 2004 - Menu du forum
 

Hum... bon, d’abord pourquoi *nix et pas Unix ? Ensuite tu voulais probablement dire "simplissime" en fin d’article et pour finir, tu nous donnerais pas quelques exemples que ça nous rendrait le truc beaucoup moins abstrait... sinon cet article nous prouve une fois de plus que Mac OS X est vraiment complètement différent d’OS 9 et pas une simple évolution et que dorénavant nous bénéficions d’outils en natifs d’une puissance que le commun des mortels n’imagine même pas... Mais je m’emporte là ;¬P

Merci Captain_X

 
> La Crontab
Par Captain_X le 9 août 2004 - Menu du forum
 

si je voulais dire simplissime, mais apparament je suis passé à côté lors de la relecture :(( navré

*nix au lieu de Unix, ben parceque c’est comme ca que l’on nomme tous les différents noyeaux derivés et ca intègre aussi bien les linux qu’OS X et les Unix que l’on trouve sur les gros serveurs.

un exemple y’en a un qui va arrivé juste derrière Gunjin a programmé sa parution pour la fin du mois. Ca porte sur la sauvegarde automatique (un sujet redondant ma foi).

 
> La Crontab
Par emynonA le 9 août 2004 - Menu du forum
 
Mon message était de bon ton t’inquiète ;¬), et merci de nous avoir éclairé sur cette histoire de *nix. Quant à ce que nous prépare le père Gunj, si ça n’était que ça... ;¬P
 
Copyright 2002-2017 xrings - Tous droits réservés - Mentions légales - Propulsé par SPIP - Webdesigner et référencement Frédéric Guerrier