Le Terminal de Jaguar - Partie 1
Note de l’éditeur — Après avoir lu les chapitres écrits par Chris Stone dans Mac OS X : The Missing Manual (NdT : Ouvrage traduit en majorité par les membres de Project:Omega et disponible sur Amazon), et ayant vu un aperçu de son travail sur Mac OS X in a Nutshell, je lui ai demandé d’écrire quelques articles sur Mac DevCenter pour aider les gens à devenir plus familiers avec l’application Terminal de Jaguar (Mac OS 10.2). Ces tutoriels vous donnent un aperçu de ce dont Chris a parlé dans Missing Manual.
Si vous avez déjà lu l’un de ces tutoriels, cette série d’articles vous semblera familière. Ceci parce que certains exemples sont identiques. Ce qui diffère est que cette série est dédiée à Jaguar alors que les articles précédents étaient écrits pour Mac OS X 10 - 10.1. Jaguar a apporté de nombreuses choses, et ces nouveaux tutoriels vous montreront comment travailler de façon efficace avec la dernière version du système d’exploitation d’Apple.
Etre à l’Aise
L’application Terminal de Mac OS X—elle se tapit dans le dossier Utilitaires, mystérieuse et étrangère. Vous avez entendu dire que c’est la porte d’entrée vers le monde de la ligne de commande Unix, un monde où votre rafale de clics souris peut être remplacée par quelques frappes de touches au clavier.
Mais vous vous méfiez et ne faites pas le pas vers ce nouveau territoire où le clavier est roi, inquiet qu’avec trop peu de connaissance, vous soyez perdus, bloqués ou pire encore. Ou bien vous êtes un aventurier, prêt à plonger dans des eaux inconnues.
Cet article est pour vous. Quelque soit la raison pour laquelle vous avez évité [yourhost:~] yourname%, je vous montrerai comment effectuer vos premiers pas sur l’application Terminal de Jaguar. Puis je vous guiderai tout au long d’un tutoriel qui vous permettra d’accélérer votre compréhension de la ligne de commande Unix.
En première partie, vous verrez ce que le Terminal peut faire et vous aurez un aperçu de la méthode du tutoriel. En deuxième partie, vous plongerez directement dans le tutoriel lui-même, pour apprendre les commandes Unix fondamentales nécessaires pour pratiquement toutes les procédures de la ligne de commande.
Puis, en troisième partie, vous terminerez le tutoriel, et vous apprendrez encore quelques petits trucs que vous pouvez faire avec la ligne de commande.
L’Interface de la Ligne de Commande
L’Interface de la Ligne de Commande (CLI en anglais) affichée dans la fenêtre du Terminal donne accès au shell Unix, qui est en fait simplement une autre façon d’interagir avec votre Mac. L’autre méthode avec laquelle vous êtes probablement plus familier est l’interface Aqua. Aqua vous permet d’interagir avec votre Mac au travers d’icônes et de menus pour lancer des applications graphiques.
En revanche, le shell vous permet de taper des commandes texte pour accomplir à peu près la même chose. Typiquement, les commandes que vous tapez lancent de petites applications Unix qui effectuent un travail très spécifique, puis se terminent. Le shell est une application qui joue les intermédiaires entre les commandes que vous entrez et le noyau Unix au coeur de Mac OS X. Il existe en fait plusieurs shells disponibles. Par défaut, Mac OS X utilise un shell appelé tcsh.
Si vous vous demandez pour quelles raisons vous voudriez utiliser un shell, lisez l’article Why Use a Command Line Instead of Windows? qui vous donnera de plus amples informations sur le CLI par rapport à l’interface Aqua.
La Procédure
Pour vous aider à vous familiariser plus rapidement avec l’application Terminal, je vais vous présenter un outil intégré à Mac OS X. Travailler avec cet outil vous mettra plus à l’aise avec les commandes principales d’Unix.
Mac OS X intègre un mécanisme qui effectue d’important ajustement de votre système. Ce mécanisme s’appelle cron. En utilisant cet outil Unix de gestion de tâches, votre système peut régulièrement effectuer des purges de fichiers périmés, de fichier de log prenant énormément de place, mettre à jour les bases de données systèmes pour que des outils tel que locate puissent travailler efficacement, et effectuer d’autres tâches de maintenance qui permettent à votre système de rester performant.
L’outil cron automatise ce processus, ce qui signifie qu’une fois que tout est configuré, le nettoyage des fichiers s’effectuera sans assistance de votre part au moment prévu. La bonne nouvelle est que Apple a effectué la configuration pour vous. La moins bonne nouvelle est qu’ils ont programmé ces groupes de tâches, ou jobs cron, pour être activés entre 4h et 5h du matin—une heure à laquelle votre Mac est probablement éteint ! Et si votre Mac n’est pas allumé à ces heures précises, ces tâches importantes ne seront jamais effectuées. Si votre Mac est allumé mais en mode veille, les jobs ne seront pas lancés.
Dans ce tutoriel, je vous montrerai comment modifier la programmation des tâches de cron, qui est lue depuis un fichier appelé crontab, pour faire en sorte que ces tâches soient effectuées à des heures plus raisonnables. Je vous expliquerai ensuite comment configurer le serveur mail intégré a Mac OS X pour que vous receviez des comptes-rendus par email chaque fois que les jobs cron sont exécutés.
Le Tutoriel
Pour ce tutoriel, assurez-vous que votre version de Mac OS X est la 10.2 ou plus récente (pour les versions précédentes d’OS X, référez vous aux tutoriels précédents dans cette série d’articles), et que vous êtes loggé avec un compte administrateur, mais non root.
Ouvrez le programme Terminal, que vous trouverez dans le dossier Applications –> Utilitaires. Une fois lancé, le Terminal ouvre une fenêtre simple qui affiche l’heure du dernier login, un message de bienvenue et une troisième ligne de texte qui comprend le prompt (invite de la ligne de commande). Avec cette fenêtre active, tout ce que vous tapez sera affiché à gauche du curseur rectangulaire qui suit le prompt. Après avoir tapé une commande, appuyez simplement sur la touche Retour ou Entrée pour l’exécuter.
Le prompt affiche le nom de l’ordinateur (ou plus exactement le nom de l’ordinateur hôte, qui peut varier), puis affiche votre répertoire de travail (”répertoire” est juste le terme Unix pour “dossier”). Le répertoire de travail est “où vous êtes”, c’est à dire, la position dans la hiérarchie de votre système de fichiers où la prochaine commande sera exécutée. Votre répertoire de travail initial est toujours votre répertoire utilisateur (Départ), qui est identifié dans le prompt par le caractère du répertoire utilisateur : “~”.

Pour afficher le chemin de votre répertoire de travail au complet, utilisez la commande pwd: Tapez pwd (qui signifie “print working directory”, afficher le répertoire de travail) et appuyez sur Retour :
[haru:~] chris% pwd /Users/chris
[haru:~] chris%
Comme vous pouvez le voir, pwd affiche le chemin complet vers votre répertoire utilisateur et vous réaffiche un prompt une fois son travail terminé. Ce chemin commence par le caractère slash (”/”), qui représente la racine de l’arborescence de votre système de fichiers. Vous remarquerez que les répertoires sur votre disque n’incluent pas le nom du disque dans leur chemin.
Pour agir sur d’autres fichiers, vous devez simplement changer votre répertoire de travail en utilisant la commande cd. Notre premier pas est de modifier le fichier crontab qui se trouve dans le répertoire /etc (normalement invisible dans le Finder). Tapez cd suivi d’un espace et du nom du chemin du répertoire à atteindre, /private/etc :
[haru:/etc] chris% cd /private/etc
[haru:/private/etc] chris% ls
Remarquez la changement dans le prompt reflétant le nom du nouveau répertoire de travail. Si vous êtes curieux de savoir ce que ce répertoire contient, utilisez ls, ou la commande list :
[haru:/private/etc] chris% ls
[haru:/etc] chris% ls
6to4.conf iftab rc.netboot
afpovertcp.cfg inetd.conf resolv.conf
appletalk.cfg kcpassword resolver
appletalk.nvram.en0 kern_loader.conf rmtab
atalk localtime rpc
authorization magic rtadvd.conf
bashrc mail services
crontab mail.rc shells
Comme vous pouvez le voir, il y a beaucoup d’éléments—plus que ce que j’ai retranscrit ici—dans /private/etc, y compris crontab.
Le Fichier Crontab
L’application cron est lancée automatiquement au démarrage du système et tourne de façon continue en tâche de fond exécutant les commandes indiquées dans les fichiers crontab. Ces fichiers indiquent exactement à cron quelles sont les commandes à exécuter et quand les exécuter. En fait, chaque utilisateur peut avoir un fichier crontab qui lui est propre. Le crontab du système trouvé dans /private/etc est la propriété du super-utilisateur ou root, et peut donc spécifier l’exécution de commandes nécessitant un accès total au système, droit que seul l’utilisateur root possède.
cp
Avant que vous n’alliez modifier la crontab système, vous devriez faire une copie de sauvegarde au cas où vous auriez besoin de revenir à son état original. Vous allez utiliser la commande cp (copy) pour le faire, qui vous permet de copier et renommer un fichier en une seule étape.
Normalement pour renommer et copier un fichier dans le même répertoire, vous taperiez cp suivi du nom du fichier original, puis le nom de la copie :
[haru: /private/etc] chris% cp crontab crontab.bak
cp: crontab.bak: Permission denied
Attendez ! Il semblerait que vous n’ayez pas les droits nécessaires pour écrire dans le répertoire etc. En fait, seul l’utilisateur root peut écrire dans /private/etc. Comme vous n’êtes pas loggez en tant que root, il semblerait qu’il n’existe pas de moyen aisé pour écrire dans ce répertoire. Et pourtant, il y en a un.
sudo
L’utilitaire sudo (”substitute-user do”, exécute en substituant l’utilisateur) vous permet d’obtenir temporairement les droits de l’utilisateur root pour une commande. Pour utiliser sudo, préfixez simplement la commande que vous souhaitez exécuter en tant que root par sudo et un espace, et sudo vous demandera d’entrer votre mot de passe (pas celui du root). Si vous êtes administrateur, l’entrée de votre mot de passe exécutera la commande sudo comme si elle était exécutée par l’utilisateur root.
Attention : Utilisez sudo avec précaution. Vous pouvez facilement faire des erreurs qui nécessiteraient une réinstallation complète du système d’exploitation. Si cette pensée vous met mal à l’aise, il serait plus sage pour vous de ne pas utiliser sudo en dehors du cadre de cet article.
Pour exécuter correctement la commande précédente, préfixer la avec sudo :
[haru:/private/etc] chris% sudo cp crontab crontab.bak
Password:
[haru:/private/etc] chris%
Remarques à propos de sudo :
- La première fois que vous utilisez sudo, vous verrez un avertissement vous rappelant d’utiliser sudo avec précaution.
- Vous n’avez à entrer le mot de passe que si vous n’avez pas utilisé sudo depuis plus de 5 minutes.
- Il n’est pas nécessaire d’activer le compte root pour utiliser sudo.
Maintenant que vous avez une copie de sauvegarde, vous devez savoir comment la restaurer au cas où vous feriez une erreur non récupérable lors de l’édition. La procédure de restauration est l’inverse de la sauvegarde :
[haru:/private/etc] chris% sudo cp crontab.bak crontab
Dans ce cas, vous remplacer le crontab invalide par son original que vous avez précédemment sauvegardé sous crontab.bak, qui est resté inchangé. Remarquez que par défaut, cp remplacera un fichier sans avertissement. Si vous voulez avoir le choix d’approuver ou non le remplacement, utilisez en option le flag -i de cp.
Les flags d’option vous permettent de modifier le comportement des commandes. Le flag d’option -i pour cp indique à cp d’afficher un prompt, vous demandant l’autorisation de remplacement. Tapez alors y pour yes, pour autoriser le remplacement, ou n pour no qui annulera le remplacement. Pour utiliser le flag, tapez simplement la commande cp, ajoutez un espace, tapez le flag -i, puis le reste de la commande :
[haru:/etc] chris% sudo cp -i crontab.bak crontab
overwrite crontab? y
[haru:/etc] chris%
Ensuite, ce que vous devez faire, c’est éditer le fichier système crontab, et vous allez apprendre comment en utilisant un éditeur en mode texte appelé pico. Cependant, si vous examinez les droits de /etc/crontab, vous pouvez voir qu’il appartient à l’utilisateur root, et seul root possède les droits en écriture. Il semblerait que nous devions encore faire appel à sudo.
pico
De tous les éditeurs en mode texte fournis avec Mac OS X, pico est le plus facile d’approche. Pour ouvrir un fichier texte avec pico, tapez simplement le nom du fichier après la commande pico. Avec sudo, la commande pour éditer le fichier crontab dans le répertoire /etc ressemble à :
[haru:/private/etc] chris% sudo pico crontab
Et voici ce que vous verrez quand il sera lancé :

La zone de texte se situe entre la barre de titre noire au sommet et les deux lignes de commandes en bas. La barre de défilement de la fenêtre du Terminal ne vous permettra pas de vous déplacer au travers du document. A la place, vous utilisez la flèche du bas pour déplacer le cursor vers le bas ligne par ligne, ou utilisez les commandes de Page.
Toutes les commandes apparaissant en bas, sont préfixées d’un caractère (”^”), qui représente la touche contrôle. Donc, pour vous rendre à la “page” suivante du texte, pressez les touches contrôle et “V” comme indiqué. Pour une description brève des commandes, lisez le fichier d’aide de pico en pressant contrôle-G.
Les nombres dans les zones cerclées indiquent quand cron exécute les scripts (il y en a trois), et c’est là que vous effectuerez les modifications.
Chaque ligne (numérotées 1, 2 et 3) indique un des trois scripts exécutés par défaut par cron. Chaque script est différent, exécutant son propres ensemble de procédures de maintenance. Le script quotidien, à la ligne numéro 1, est exécuté une fois par jour. Le script hebdomadaire, à la ligne 2, est exécuté une fois par semaine. Et le script mensuel, à la ligne 3, est exécuté—comme vous l’avez deviné—une fois par mois.
Les cinq premières colonnes ou champs de chaque ligne indique l’intervalle entre chaque exécution de script. Les champs indiquent, de la gauche vers la droite, la minute, l’heure (en mode 24 heures), le jour du mois, le mois et le jour de la semaine (en numérique, avec Dimanche ayant pour numéro 7). Les astérisques utilisées en place des numéros signifient “tous”.
Par exemple, la ligne 1 indique 3h15 du matin (am):
15 3 * * * root periodic daily
Puisque les colonnes restantes contiennent une astérisque, le script quotidien est exécuté à “3h15 du matin chaque jour du mois, tous les mois et tous les jours de la semaine”, ce qui revient à dire “tous les jours à 3h15 du matin.”.
La ligne 2 indique que le script hebdomadaire est exécuté à 4h30 du matin, chaque sixième jour (6) de la semaine, soit le samedi :
30 4 * * 6 root periodic weekly
Et la ligne numéro 3 indique que le script mensuel est exécuté à 5h30 du matin le premier jour (1) de chaque mois.
30 5 1 * * root periodic monthly
En modifiant ces valeurs, vous pouvez faire exécuter ces scripts à des heures plus raisonnables. Bien sûr, ce qui est raisonnable dépend de votre propre situation, alors pensez à considérer les facteurs suivant au moment de votre choix :
- Choisissez une heure pendant laquelle votre Mac à des chances d’être en marche (et pas en mode veille).
- Choisissez une heure pendant laquelle quelques minutes d’activité en tâche de fond ne perturberont pas trop votre travail. Sur des machines rapides, cette activité est à peine visible, mais elle pourrait provoquer des hoquètements si par exemple vous êtes en train de visionner un DVD à ce moment là.
- Choisissez une heure qui est unique pour chaque script. Vous ne voulez pas avoir des scripts qui soient exécutés en même temps.
Par exemple, ces valeurs peuvent être valides pour une machine qui ne fonctionne que pendant les heures de travail :
- Quotidien — tous les jours à 15h15
- Hebdomadaire — tous les lundi à 8h50
- Mensuel — le premier jour de chaque mois à 9h30
En ce qui concerne le job mensuel, le premier du mois peut parfois correspondre à un weekend ou une période de vacances, mais pour le moment, c’est le mieux que nous puissions faire.
Pour modifier le fichier crontab de façon à ce qu’il reflète ces nouveaux horaires, utilisez les touches de curseur (les quatres touches fléchées) pour déplacer le curseur sur le champ désiré. A part le fait que vous ne pouvez pas utiliser la souris, vous verrez que éditer un fichier texte avec pico est semblable à tout autre éditeur de texte graphique. Utilisez la touche suppression comme d’habitude, et tapez les nouvelles valeurs.
Premièrement, modifier le 3 du script journalier à la ligne 17 :
15 17 * * * root periodic daily
Ensuite, modifiez l’heure du script hebdomadaire; changer le jour de 6 à 2 (de samedi à mardi) :
50 8 * * 2 root periodic weekly
Enfin, modifiez l’heure du script mensuel :
30 9 1 * * root periodic monthly
Une fois les changements effectués, sauvegardez (”write out”) le document en pressant contrôle-O. Il vous sera demandé de confirmer la sauvegarde. Appuyez sur la touche Retour.

Enfin, quittez pico en appuyant sur contrôle-X.
Une fois que vous avez sauvegardé le fichier crontab, la nouvelle programmation prend effet ; il n’est pas besoin de redémarrer. Vous ne recevrez pas encore de notification de la complétion des jobs cron, mais en deuxième partie, vous apprendrez à le faire, et vous apprendrez plus à propos des scripts eux-mêmes.

Textes originaux en anglais sur O’Reilly : Learning the Terminal in Jaguar, Part 1 par Chris Stone
Chargement
Commentaires récents