Accueil
 1  Licence
 2  Prologue
 3  Système d'exploitation, système d'exploitation Unix
 4  Première utilisation
 5  Système de fichiers
 6  Shell
 7  Processus
 8  Quelques outils supplémentaires
 9  Communications sous Unix
 10  Épilogue: Rappels importants
 Index
 Glossaire
 Foire Aux Questions
 Aide

 Contacts

W3C validator

Département INF  
 Initiation à UNIX


Foire Aux Questions

Les paragraphes qui suivent constituent la FAQ. Veuillez en prendre connaissance et vous y reporter avant de poser une question dans le forum, voire de poser une question par courrier électronique aux enseignants.

 
 
3. Système d’exploitation, système d’exploitation Unix
 

  1. Q: Que veut dire CPU?  
    R: CPU signifie Central Processor Unit. Dans le cours, CPU est traduit par UC, Unité Centrale. Pour résumer, c’est le processeur.
  2. Q: Est-ce que la machine virtuelle est l’ensemble machine matérielle + logiciel?  
    R: La machine virtuelle est une virtualisation logicielle du matériel.
  3. Q: C’est quoi cette structure en couches?  
    R: À la base, il y a le matériel. Juste au-dessus, il y a le système d’exploitation qui est la première couche logicielle et qui permet déjà la communication avec le matériel si on est un expert en informatique. Ensuite, au-dessus du système d’exploitation, il y a des couches logicielles qui se succèdent. Plus on utilise une couche logicielle élevée, plus l’utilisation est facile, mais l’inconvénient c’est que plus de ressources sont utilisées, donc on perd en performance.
  4. Q: Un système d’exploitation multitâche est-il forcément multi-utilisateur? Le système d’exploitation peut-il être multi-utilisateur mais monotâche?  
    R: (1) Non. (2) Multi-utilisateur et monotâche ? ça n’existe pas ! Cela voudrait dire qu’il faudrait attendre qu’un programme lancé par un autre utilisateur se termine pour avoir une chance de lancer son propre programme. Il ne pourrait alors être question d’interactivité...
  5. Q: Qu’est-ce qu’une machine « multiprocesseur » ?  
    R: C’est une machine qui a plusieurs processeurs sur sa carte mère. L’avantage est la puissance de calcul accrue que cela propose. Pourquoi ne pas mettre un processeur plus puissant ? Il n’existe pas nécessairement ou alors est très coûteux.
  6. Q: Quelle est la différence entre les différentes distributions basées sur GNU/Linux ?  
    R: Toutes les distributions basées sur GNU/Linux utilisent le même système d’exploitation: GNU/Linux ! L’interface graphique n’est la plupart du temps pas non plus une différence entre les distributions. En fait, ce qu’il faut savoir c’est qu’une distribution basée sur GNU/Linux contient des tonnes de logiciels (contrairement à Windows). Le choix d’une distribution se fait par le choix des logiciels: telle distribution contient tels et tels logiciels et une autre des logiciels différents. Au final, il se trouve qu’elles sont relativement proches. Certaines distributions sont spécialisées dans certains domaines. La Mandrake se veut être une distribution française et accessible à tous. La Slackware se veut être la plus légère possible. Une autre différence orientant le choix est le mode, la facilité d’installation, la fréquence des mises à jour et le support de nouveaux matériels.
  7. Q: « GNU/Linux est une distribution » Pourquoi est-ce faux?  
    R: GNU/Linux est un système d’exploitation alors que Fedora est une distribution de ce système d’exploitation. Précisément, Linux est le noyau d’un système d’exploitation. Le noyau est un logiciel de base qui fournit des services système tels que la gestion des fichiers, la mémoire virtuelle (vous ne l’étudierez que plus tard), le système d’entrées/sorties, etc. Cependant, un système d’exploitation a besoin de plus que cela. L’organisation GNU a développé beaucoup d’applications logicielles qui avec le noyau Linux en font un système d’exploitation complet. Cet ensemble logiciel est appelé GNU/Linux. En ajoutant une partie de l’ensemble logiciel GNU/Linux, des fichiers de configuration et des programmes d’installation, on aboutit à ce que l’on appelle une distribution basée sur GNU/Linux, telle que Fedora.
  8. Q: Quel est le lien entre Unix, Linux et le logiciel libre?

     
    R: Les systèmes d’exploitation Unix existent depuis le début des années 1970, et se déclinent en différentes variantes commercialisées par des éditeurs logiciels (propriétaires pour la plupart). Le projet GNU a été lancé en 1984 par la Free Software Foundation dans le but de créer un système d’exploitation compatible avec Unix, et composé exclusivement de logiciels libres, c’est-à-dire librement utilisables, modifiables et distribuables. Plus tard, à partir de 1991, un projet de logiciel libre indépendant du projet GNU a créé le noyau Linux, qui constitue le cœur d’un système utilisant les outils du projet GNU. Ainsi, l’assemblage de ces deux projets avec de nombreux autres, sous la forme d’une distribution basée sur GNU/Linux, constitue une plate-forme logicielle libre compatible avec les systèmes Unix propriétaires.

  9. Q: Le langage C, qu’est-ce que c’est?  
    R: Le langage C est un langage de programmation comme Pascal ou Java. GNU/Linux est écrit en langage C. De plus, le langage C est le premier langage de programmation étudié à Télécom SudParis.
  10. Q: Quelle est la différence entre le stockage en mémoire centrale et le stockage sur disque dur?  
    R: La mémoire centrale stocke les données pour effectuer les tâches, alors que le disque dur est un périphérique pour une mémoire à long terme. En fait, la mémoire centrale, c’est la RAM ou encore mémoire vive; c’est une sorte de brouillon pour le processeur, où il fait des calculs, mais qui est effacée dès que l’on en n’a plus besoin ou si on éteint la machine. Par contre, le disque dur est un périphérique de stockage à long terme.
  11. Q: Comment se procurer GNU/Linux ?  
    R: Il y aura des « install party » qui vont être organisées début octobre ou novembre où chacun pourra être aidé pour installer GNU/Linux sur sa machine.

 
 
4. Première utilisation
 

  1. Q: Comment tester la commande su?

     
    R: Le plus simple est d’être deux. L’un d’entre vous est déjà connecté sur la machine. L’autre personne (possédant aussi un compte sur cette machine) souhaite être connectée sans vous déconnecter. Il faut donc qu’elle utilise la commande su - sonlogin dans une fenêtre terminal, et saisisse son mot de passe. Elle est ainsi également connectée et peut le vérifier en utilisant la commande id.

  2. Q: Quel est le lien entre « multifenêtre » et « peu de commandes » dans l’expression « même si les environnements graphiques multifenêtres permettent de ne taper que peu de commandes » ?  
    R: Avec les environnements graphiques multifenêtres, par exemple, on « ouvre » des fichiers et des répertoires en cliquant dessus avec la souris, donc sans utiliser de commandes (comme avec l’explorateur sous Windows).
  3. Q: Un client XWindow, qu’est-ce que c’est?  
    R: L’environnement graphique de votre ordinateur n’est pas fourni par le système d’exploitation. Il est géré par un ensemble d’applications. La brique de base de ces applications est le serveur XWindow. Il fournit l’ensemble des éléments graphiques: dessin des lignes, rectangles... et d’autres fonctionnalités telles que le rafraîchissement de l’écran. Une autre application utilisée pour créer et gérer votre environnement graphique est le gestionnaire de fenêtres. Ce gestionnaire utilise XWindow pour le dessin des fenêtres. C’est pour cela que l’on dit qu’il est un CLIENT XWindow. De même, toutes les applications qui utilisent des fenêtres: messagerie, éditeur de texte, navigateur Web... sont des clients XWindow.
  4. Q: Il est dit que l’environnement multifenêtre fournit un grand nombre de bibliothèques pour la construction d’applications fenêtrées, mais qu’est-ce qu’une bibliothèque exactement ?  
    R: Une bibliothèque de construction d’applications fenêtrées, c’est ce qui permet au développeur de créer par exemple un menu, une zone de saisie, une fenêtre..., c.-à-d. tout ce que l’on peut retrouver de « commun » à toutes les applications.
  5. Q: Y-a-t-il un rapport entre « un client XWindow » et Windows de Microsoft?  
    R: Non, il n’y a aucun rapport entre les deux. Il faut seulement se rappeler que window en anglais signifie simplement fenêtre.
  6. Q: Je ne comprends pas pourquoi je n’arrive à executer aucune des commandes xterm,xload...) ?? J’ai toujours comme réponse « can’t open display »?

     
    R: Essayez-vous de lancer ces commandes dans une fenêtre de Putty à partir de Microsoft Windows? Si oui, c’est normal car Microsoft Windows n’exécute pas de serveur XWindow.

  7. Q: Pourquoi utiliser emacs plutôt qu’OpenOffice?  
    R: Question très intéressante. Voilà la question reformulée : quelle est la différence entre un éditeur de texte et un traitement de texte? C’est un peu comme comparer le bloc notes et Word... rien à voir en fait :) L’un fait des fichiers textes (texte pur), sans formatage (pas de gras, souligné, couleurs, mise en page complexe, puces, ..), l’autre des pages justement formatées. Les fichiers texte sont notamment utilisés pour écrire des programmes ou de courtes notes qui n’ont pas besoin de mise en page évoluée, un mail par exemple. Les traitements de texte sont utilisés pour écrire des textes nécessitant une mise en page évoluée. Chaque traitement de texte produit des fichiers à un format qui lui est propre alors que tous les éditeurs de texte produisent des fichiers au format “texte”. Pour ouvrir un fichier autre que du texte, il faut connaître une application capable de le lire.

    Par exemple, si vous avez un fichier .doc, monfichier.doc, openoffice est capable de le lire. Donc, il vous faut soit lancer l’application via l’interface graphique, soit via le shell en utilisant la commande ooffice monfichier.doc. Autre exemple, pour un fichier pdf, vous pouvez utiliser xpdf ou acroread pour le lire: xpdf monfichier.pdf ou acroread monfichier.pdf. De manière générale, pour ouvrir un fichier autre que du texte dans le shell, il faut connaître la commande permettant de lancer une application capable de le faire. Pour un fichier texte, cat ou more pour simplement voir le contenu du fichier ou emacs pour l’éditer et le modifier, bien sûr!

  8. Q: J’ai essayé de modifier la taille de la fenêtre d’emacs, en changeant les paramètres des lignes et des colonnes , mais c’est sans effet. Pourquoi ?  
    R: Vérifiez que vous n’avez pas écrit une étoile (« * ») à la place du caractère « x » dans l’argument de l’option -geometry.
  9. Q: Quelle est la différence entre un « shell » et un « terminal »? ou est-ce la même chose?  
    R: Le « terminal » est une fenêtre Xwindow exécutant un « shell ».
  10. Q: L’explorateur de fichier Nautilus n’a pas la même apparence que celle que l’on peut voir dans la démonstration de l’illustration interactive. Ce qui manque, c’est de pouvoir avoir accès à l’arborescence des fichiers, l’historique, etc.  
    R: C’est le cas de tout le monde car le gestionnaire de fenêtre utilisé dans cette illustration ne correspond pas exactement à celui des systèmes d’exploitation installés dans les salles TP de Télécom SudParis de cette année.
  11. Q: Est-ce que les options ont toujours la même signification quelle que soit la commande? Par exemple, -a donne-t-elle toujours plus d’informations sur une commande? Est-ce qu’il existe des options incompatibles que l’on ne peut accoler?  
    R: (1) Non hélas, il n’y a pas uniformisation sur le nom des options. Même si certaines options ont la même signification pour plusieurs commandes (par exemple -v correspond souvent à verbose), on ne peut pas généraliser. (2) Oui, certaines options sont incompatibles. Par exemple les options -s (mode silent pour « pas d’affichage ») et -l (pour « mode verbeux ») de la commande cmp (comparaison).
  12. Q: Comment consulter le manuel d’aide en ligne ?  
    R: Vous pouvez consulter le manuel d’aide en ligne en mode texte (commande man) ou en mode graphique en cherchant dans un menu un onglet « Aide » (là, il faut chercher un lien faisant référence à un « manuel » ou encore à des commandes Unix).
  13. Q: Comment sortir de la commande man ?  
    R: Avec la touche q.
  14. Q: À quoi correspond la section de l’aide en ligne notée « 1x », sachant que celle notée « 1 » est pour les commandes ?  
    R: Quelquefois, une lettre est ajoutée au numéro de section comme par exemple « xterm.1x » ou « wish.1tk ». Le but de cette notation est d’indiquer qu’il s’agit respectivement d’une documentation d’un programme XWindow ou d’une application Tk.
  15. Q: Une fois que l’on connaît la section dans le manuel en ligne, comment lancer la commande « man » permettant de lire la bonne page?  
    R: Parmi les options de la commande « man », il est possible de préciser un numéro de section (vous pouvez retrouver cela en faisant man man). Ce numéro de section peut être précisé sous la forme N ou -S N. Essayez par exemple les commandes « man write » puis « man 2 write ». Vous trouverez deux pages différentes correspondant à la commande write dans la section 1 (par défaut) puis à la primitive système pour la programmation dans la section 2.
  16. Q: J’ai vu ce mot dans beaucoup d’endroits mais je ne comprends pas exactement de quoi il s’agit: « super-utilisateur ».  
    R: C’est un compte Unix, appelé aussi « root » en anglais. En travaillant sous ce compte, les administrateurs des systèmes informatiques de Télécom SudParis installent et mettent à jour les systèmes d’exploitation et les applications. Ils peuvent effectuer toute opération sur la totalité de l’arborescence, contrairement à un utilisateur normal.

 
 
5. Système de fichiers
 

  1. Q: Le super-bloc d’Unix est-il l’équivalent de la base de registres de Windows? Que contient exactement le super-bloc? Qui possède un super-bloc?  
    R: Le super-bloc donne une image de la décomposition d’un système de fichiers en blocs contenant les inodes et blocs contenant les données. Toute partition Unix contenant un système de fichiers possède donc un super-bloc. C’est tout à fait différent de la base de registres Windows qui est une base de données hiérarchisée utilisée par le système d’exploitation pour stocker des informations sur les périphériques, les applications installées et les préférences de l’utilisateur.
  2. Q: Qu’est ce qu’une partition?  
    R: Une partition est une unité logique qui fait physiquement partie du disque dur. L’un des intérêts des partitions est de mieux organiser un disque dur et de pouvoir avoir plusieurs systèmes d’exploitation différents comme dans les salles de TP de Télécom SudParis.
  3. Q: Une petite définition simplifiée de « inode » m’aiderait.  
    R: L’inode est l’ensemble des informations décrivant un fichier. C’est ce que l’on appelle en informatique une méta-information: une information sur l’information. Ainsi, dans un système de fichiers, tous les fichiers sont décrits (taille, emplacement des données sur le disque, propriétaire...) dans une structure appelée inode. Le système de fichiers comporte donc deux sections importantes : les inodes et les données.
  4. Q: Que signifient les « x » niveaux d’indirection des adresses indirectes ?  
    R: Un niveau d’indirection signifient que l’adresse pointée est une adresse qui contient d’autres adresses vers les véritables données. Deux niveaux d’indirection signifie que l’adresse pointe vers une zone mémoire qui contient d’autres adresses, ces dernières pointant vers une zone mémoire contenant des données, etc. Ainsi, les petits fichiers sont repérés par des adresses directes de l’inode, ce qui permet de garder un accès rapide. Les gros fichiers sont repérés avec des niveaux d’indirection plus élevés pour pouvoir disposer de plus de blocs de donnés pour stocker les informations. En effet, avec trois niveaux d’indirection, il y a au moins environ 2563 blocs de données, ce qui fait de la place.
  5. Q: À quoi cela sert-il d’obtenir le numéro d’inode d’un fichier.  
    R: Cela sert à faire la différence entre les deux situations suivantes:
    1. deux fichiers au même contenu, c.-à-d. un original et une copie obtenue par cp,
    2. deux noms pour le même fichier après utilisation de ln.

    Le numéro d’inode permet donc de savoir si deux noms correspondent au même fichier (mêmes blocs de données) ou à des fichiers différents (blocs de données distincts mais pouvant avoir le même contenu).

  6. Q: Que signifient les couleurs associées aux liens avec la commande ls?  
    R: vous avez dû remarquer que la commande ls utilise différentes couleurs pour afficher son résultat. Ces couleurs sont d’ailleurs définies par le fichier /etc/DIR_COLORS pour Fedora. Ce sont des couleurs associées aux différents types d’entrées dans l’arborescence, mais cela n’est qu’un effet d’affichage. Si vous n’avez pas encore constaté ce type d’affichage coloré, exécutez la commande ls -l −−color.
  7. Q: Qu’est-ce qu’une structure de 64 octets?  
    R: Un endroit de stockage qui fait 64 octets, soit 64 8 bits.
  8. Q: Que signifient les deux types de périphériques « mode bloc » et « mode caractère »? Et le mode « raw-block »?  
    R: Un périphérique en mode « bloc » est un périphérique qui peut supporter un système de fichiers ; il est accédé par bloc (et non par caractère) par le système, aussi bien en lecture qu’en écriture, d’où son nom. Un périphérique en mode « caractère » est au contraire accédé uniquement par caractère, comme une imprimante par exemple. Le mode « raw-block » permet dans certains cas d’accéder par caractère à un périphérique bloc pour des opérations de maintenance.
  9. Q: En quoi /dev/null est un pseudo-périphérique ?  
    R: Dans le cours shell, vous verrez que la commande ls > nomFichier envoie le résultat de ls dans le fichier nomFichier. Si le résultat de la commande ls ne vous intéressait pas, vous pouvez taper ls > /dev/null. Tout ça pour dire qu’on constate qu’on peut écrire des octets sur /dev/null. C’est donc que /dev/null est un périphérique. Or, il n’y a pas de matériel null (alors qu’il y a un matériel écran, un matériel lecteur de CD-ROM...), ce n’est donc pas un vrai de vrai périphérique. Comme vrai de vrai ne fait pas très sérieux, on parle de pseudo-périphérique.
  10. Q: Pourquoi un périphérique est d’un mode donné et pas d’un autre mode? Est-ce absolu ou est-ce lié aux propriétés du périphérique? Par exemple, pourquoi une imprimante est en mode « caractère » et pas en mode « bloc »?  
    R: C’est en partie lié aux propriétés du périphérique. Dans le cas de l’imprimante, le gestionnaire d’impression envoie un flot d’information caractère par caractère (de manière séquentielle). Dans le cas du disque, le gestionnaire du disque lit, respectivement écrit, une section physique du disque (un bloc) et la place en mémoire, respectivement recopie un bloc mémoire vers le disque.
  11. Q: Comment voit-on sur un périphérique la différence entre le mode « bloc » et le mode « caractère »?  
    R: Avec la commande ls -l nom_périphérique, le premier caractère (avant les droits d’accès) est soit « b » pour bloc soit « c » pour caractère. Par exemple,
    1) ls -l /dev/tty7 (Terminal : mode caractère)
    crwrwrw1 root root 4, 7 2002-08-12 14:55 /dev/tty7
    2) ls l /dev/hda1 (Disque : mode bloc)
    brwrw−−−−1 root disk 3, 0 2002-03-14 22:51 /dev/hda1
  12. Q: Qu’est-ce que la corbeille (/dev/null)?  
    R: C’est un pseudo-périphérique, c.-à-d. ça s’utilise comme un périphérique mais ça n’en est pas un vrai (;-)). Elle correspond plus ou moins au vide cybernétique! En entrée (lecture), elle correspond à « rien », d’où la création d’un fichier vide par copie. En sortie (écriture), « rien » correspond à poubelle, c.-à-d. au vidage automatique sans aucune récupération possible.
  13. Q: Est-il possible de changer le répertoire de connexion?  
    R: Le nom et la position du répertoire de connexion sont fixés lors de la création d’un compte utilisateur sur un système. Et seul l’administrateur du système (ou super-utilisateur) pourrait apporter une modification.
  14. Q: Comment entrer dans un répertoire avec la commande cd lorsque le répertoire possède un nom composé comme « Dossier personnel » par exemple?  
    R: Cette question est un peu en avance sur le cours. 1) Encadrez le nom entre quote («  »), par exemple cd ’Dossier personnel’. 2) Évitez de faire ce genre de nommage dans Windows ou dans gnome/nautilus.
  15. Q: La commande cp /etc/passwd donne un message d’erreur indiquant que le fichier cible n’existe pas. Que dois je faire?  
    R: Il faut taper cp /etc/passwd nomFichier par exemple. Il faut préciser où copier le fichier et le nom du nouveau fichier.
  16. Q: Comment faire pour supprimer un dossier et tous ses sous dossiers avec les fichiers en une seule commande ?  
    R: Essayez l’option -r de la commande, mais soyez très vigilant pour ne pas effacer de fichiers ou répertoires par erreur.
  17. Q: Sous linux, il n’est pas possible de faire de liens entre partitions, pourtant sous Windows c’est possible. De quel type de lien parlez-vous ?  
    R: Cette restriction n’est valable que pour les liens dits physiques, pas pour les liens symboliques.
  18. Q: À quoi sert un lien symbolique?  
    R: Le lien symbolique permet de créer un lien entre des éléments qui ne sont pas dans les mêmes partitions, contrairement aux liens logiques « classiques », dits physiques.
  19. Q: Quelle est la différence fondamentale entre un lien symbolique et un lien physique, et surtout son utilité par rapport au lien physique ?  
    R: Utilité des liens symboliques:
    1. traverser les systèmes de fichiers,
    2. liens sur des répertoires,
    3. liens indépendants de l’existence de la cible (ce qui permet d’anticiper par exemple une installation de logiciel).
  20. Q: Pourquoi quand on tape la commande cat sur un lien symbolique (celui qui clignote), ça ne marche pas ?  
    R: Quand le lien symbolique clignote en rouge, cela veut tout simplement dire que le chemin spécifié est invalide, dans ce cas le lien pointe vers un fichier inexistant.
  21. Q: Qu’est-ce que l’option de déréférencement « -L » de la commande ls?  
    R: Déréférencer veut dire regarder ce qu’il y a derrière une indirection. Ici, avec en plus l’option -l, il s’agit d’afficher les attributs du fichier pointé par le lien symbolique plutôt que les caractéristiques du lien symbolique.
  22. Q: Pourquoi le fait d’utiliser des liens nous permet d’économiser de la mémoire puisqu’en définitive ils pointent sur des fichiers qui utilisent donc de la mémoire?  
    R: Le gain existe lorsque l’on crée un lien sur un fichier au lieu d’en faire une copie.
  23. Q: Un lien possède-t-il les mêmes droits d’accès que le fichier initial ?  
    R: Oui pour les liens physiques. Pour un lien symbolique, le lien est mis rwxrwxrwx et la documentation dit qu’il n’est pas tenu compte des droits du lien symbolique mais de ceux de l’entrée pointée par le lien.

 
 
6. Shell
 

  1. Q: Comment faire disparaître le signe (ou prompt) « > » en début de commande à la place du prompt normal (par exemple « $ ») ?  
    R: Tapez CTRL-C. Ceci permet d’interrompre la saisie d’une commande et de revenir au prompt normal.
  2. Q: Qu’est-ce qu’une redirection ? Au lieu d’avoir ce que l’on veut sur l’écran, on l’a dans un fichier ?  
    R: La redirection permet en effet de mettre dans un fichier le résultat d’une commande au lieu de l’afficher à l’écran. Cela permet par exemple de pouvoir traiter directement des informations sans avoir à faire des copier/coller à tour de bras (et donc limiter les erreurs) ou alors de garder un résultat pour plus tard.
  3. Q: Quel est le rôle de la commande gcc rencontrée dans l’illustration interactive « redirection » ?  
    R: En tapant « whatis gcc », on obtient « GNU project C and C++ compiler ». Le compilateur gcc sera expliqué plus tard dans le cours CSC 3002.
  4. Q: Qu’est-ce qu’un shell script ?  
    R: C’est un script, ou série d’instructions, shell programmé qui peut par exemple être exécuté plus tard dans un terminal.
  5. Q: Comment taper la barre verticale (pipe) ?  
    R: Appuyer sur les touches Alt-Gr et 6.
  6. Q: Quelle est la différence entre les méta-caractères «  » (apostrophe) et « " » (guillemets anglaises)?  
    R: Tapez les deux exemples: echo ’$(pwd)’ et echo "$(pwd)".
  7. Q: /dev/null est la poubelle, comment l’utilise-t-on pour supprimer des fichiers?  
    R: dev/null est mentionné comme étant une « poubelle » (notez les guillemets). En général, on ne s’en sert pas pour les manipulations de fichiers, même si certaines commandes marchent. Par exemple, cp /dev/null toto.txt crée un fichier vide toto.txt dans le répertoire courant. En revanche, on l’utilise beaucoup quand on veut ignorer des affichages de résultats en tapant par exemple tar xf arch.tar > /dev/null. De même, on peut souhaiter ignorer les erreurs en les redirigeant vers /dev/null.
  8. Q: Pourquoi lorsque je tape la ligne de commandes « alias la=’ls -a’ ; la », le shell ne trouve pas l’alias, alors que si je retape la commande « la » dans la ligne suivante, il le trouve?  
    R: Les alias sont traités lorsque la commande est lue, et non pas lorsqu’elle est exécutée. Ainsi, une définition d’alias apparaissant sur la même ligne qu’une autre commande ne prend pas effet avant la lecture de la prochaine ligne d’entrée. Autrement dit, une commande placée à la suite d’une définition d’alias, sur la même ligne ne sera pas affectée par cet alias. Pour plus de tranquillité, placez toujours les définitions d’alias sur des lignes isolées, et n’utilisez jamais la commande alias dans les commandes composées. Notez que c’est la même chose avec la destruction des alias via la commande unalias.
  9. Q: Qu’est-ce qu’une primitive?  
    R: D’une façon générale, une primitive d’un logiciel est une fonction interne à ce logiciel, c.-à-d. qui ne fait appel à aucun autre code que celui de ce logiciel. Par exemple, une primitive système est une fonction interne au noyau, qui ne nécessite donc aucun chargement supplémentaire de binaire pour s’exécuter. Une primitive du shell (appelée « builtin ») est une commande interne au shell exécutée directement par le shell sans création de processus comme c’est le cas pour les commandes en général (que l’on pourrait qualifier d’externes). En complément, recherchez « builtin » dans la page du manuel en ligne de bash.
  10. Q: Quel est l’intérêt concret des variables?  
    R: Le Shell est un outil très puissant et il regroupe deux fonctions ; celle qui est étudiée ici : interpréteur de commandes, mais c’est aussi un langage de programmation. Les variables ont donc un intérêt majeur pour la programmation. Certaines (appelées variables prédéfinies) jouent aussi un rôle important pour l’interpréteur de commandes car elles permettent de paramétrer son fonctionnement et celui des commandes. Par exemple, PATH liste les répertoires où le shell va chercher des exécutables, PRINTER définit un nom d’une imprimante par défaut, HOME caractérise le répertoire de connexion, DISPLAY définit le lieu d’affichage du serveur XWindow et il en existe bien d’autres encore.
  11. Q: Qu’est-ce qu’une variable prédéfinie?  
    R: C’est une variable qui existe et qui a un contenu à l’ouverture de chaque session. À ces variables prédéfinies, il est possible d’en ajouter d’autres, par exemple la variable mois avec la commande: mois=septembre.

 
 
7. Processus
 

  1. Q: Que signifient « signal 15 » et « signal 9 »?  
    R: Ce sont des signaux différents envoyés à des processus pour des traitements différents, non étudiés dans ce cours. Le 15 est celui envoyé par défaut par la commande kill pour demander au processus de s’arrêter, le 9 force un processus à s’arrêter et à se détruire.
  2. Q: Comment peut-on vérifier l’avancement d’un processus avec la commande ps?  
    R: ps ne prend qu’une image de l’état des processus au moment où la commande est exécutée. La commande affichant dynamiquement l’état en temps réel des processus est top.
  3. Q: Dans le cours, « regardons les processus autres que ceux de la session en cours grâce à l’option "a", mais toujours les nôtres. » Et dans le manuel, « a (autres) présente également les processus des autres utilisateurs. » Ce qui est un peu contradictoire, non ?  
    R: ps est l’une des très rares commandes à autoriser les options avec et sans tiret, d’où la confusion. Essayez ps -al puis ps al. Il y a une différence. La différence entre les deux est la suivante:
    1. ps -al montre bien vos processus;
    2. ps al montre tous les processus qui sont attachés à un terminal (qui ont un tty). Cela signifie qu’ils peuvent écrire dans la sortie standard.

    Malheureusement, sur les machines des salles de TP, dans l’aide en ligne, il est dit à tort que « les arguments de la ligne de commande peuvent être précédés par un “” (tiret), mais ce n’est pas indispensable. » En fait, les options avec tiret sont censées avoir le même comportement sur tous les UNIX. C’est pour cela que nous les utilisons, et nous contentons de celles-là.

  4. Q: À quoi correspond l’acronyme tty de la commande ps ?  
    R: tty est la fenêtre terminal (tty pour télétype). Ouvrez deux terminaux et tapez ps dans chacun d’eux. Vous verrez deux numéros de tty différents.
  5. Q: Après avoir exécuté la commande top, comment sortir pour avoir une autre ligne de commande dans le terminal?  
    R: Avec la touche q.
  6. Q: Est-il possible de suspendre, mais sans le supprimer, un processus en arrière-plan?  
    R: Une bonne façon est de ramener le processus en avant-plan (avec fg) et de le suspendre avec CTRL-Z.
  7. Q: Une commande mise en arrière-plan continue-t-elle à s’exécuter? Ou est-elle suspendue, comme avec ctrl-Z?  
    R: Une commande en arrière-plan et non suspendue continue de s’exécuter.
  8. Q: Comment se fait-il que lorsqu’on lance la commande sleep 500& par exemple et que l’on liste les processus en cours, la colonne time affiche toujours 0 alors que le processus a déjà commencé son exécution ?  
    R: La commande sleep ne travaille pas ! Elle permet d’endormir le shell.
  9. Q: Pourquoi « un processus n’a qu’un seul processus parent »? Je n’ai pas compris ce que voulaient dire processus parent, processus enfant.  
    R: Unix manipule une hiérarchie (un arbre) de processus. La relation définie s’appelle la parenté. Un processus possède un seul parent (son créateur), un seul grand-parent... Un processus peut créer plusieurs autres processus qui sont ses enfants. Par exemple, à chaque fois que le shell exécute une commande, il crée un processus enfant.
  10. Q: De quel genre de ressource peut avoir besoin un processus dont l’absence mettrait le processus en attente ? Pourquoi le processus n’avait pas toutes les ressources nécessaires dès le début ?  
    R: Un processus peut par exemple demander à écrire/lire des données du disque dur. Pendant la durée de l’opération, le processus n’a pas besoin du processeur: c’est la « carte » du disque qui travaille. Le processus est donc mis en attente de la fin de l’opération sur le disque et le processeur est attribué à un autre processus prêt à l’utiliser.
  11. Q: Plusieurs fois dans le cours, on parle de primitive d’un noyau ou de primitive système pour exécuter une fonction du noyau.  
    R: Lorsque l’on utilise le shell par exemple, il s’exécute dans l’espace utilisateur. Cependant, à chaque fois qu’on lui demande de créer, d’ouvrir ou de modifier un fichier ou un répertoire, le shell fait appel au gestionnaire des fichiers, qui se trouve dans le noyau Unix! Pour cela, le shell passe de l’espace utilisateur à l’espace système du noyau en utilisant un « pont », qui s’appelle une primitive.
  12. Q: Que veut dire « mettre une variable dans l’environnement »? Quel est cet environnement et à quoi est-il relatif : à un processus donné?  
    Où exporte-t-on les variables? Et à quoi sert-il de les exporter? Qu’appelle-t-on local et global?
     
    R: À la base, dans un processus, toutes les variables sont locales. Quand il veut « publier » une variable pour la communiquer à ses enfants lors de leur création, il la rend globale avec export (qui la met dans l’environnement). L’environnement, c’est l’ensemble des variables transmises aux enfants.

 
 
8. Quelques outils supplémentaires
 

  1. Q: C’est quoi un « champ » exactement?  
    R: La notion de champ correspond à des chaînes de caractères séparées les unes des autres par un caractère séparateur qui est par défaut espace ou tabulation, mais que l’on peut remplacer par un autre caractère « x » grâce à l’option « -t » pour la commande sort ou « -dx » pour la commande cut).  
    R: Un champ est un emplacement dans lequel on stocke une donnée (terme utilisé dans les bases de données): on divise la base de données (fichier) en emplacements appelés « champs ».
     
    R: Un séparateur de champ permet de découper une ligne en morceau. Par exemple, dans le fichier /etc/passwd, c’est le « : ». Autre exemple, pour une ligne de commande dans un shell, c’est l’espace, la tabulation ou le retour chariot. Par curiosité, la valeur du séparateur de champ est contenu dans la variable IFS . Essayez set | grep IFS.
  2. Q: Quelle est la différence entre « sort -k3 -k2 fruits » et « sort -k3,3 -k2,2 fruits »?  
    R: la page du manuel en ligne de la commande sort donne l’explication suivante pour l’option -k:  
    verbatim Si POS2 n’est pas précisé, le tri commence à la colonne POS1 et se termine à la fin de la ligne. En précisant -k3,3, le premier critère de tri commence et s’arrête à la troisième colonne. Il porte donc uniquement sur la troisième colonne sans prendre en compte la fin de la ligne. La commande « sort -k3,3 -k2,2 fruits » correspond donc à la formulation: « tri sur la 3ème colonne puis sur la 2ème colonne en cas d’égalité ».
  3. Q: Pourquoi la commande find /users -user f* -print contient une erreur de syntaxe?  
    R: Le critère user de la commande find n’accepte pas les jokers, donc pas le méta-caractère « * » (étoile), contrairement au critère name. Ceci est simplement dû au fait que les jokers servent pour les noms de fichiers, mais pas pour les noms des utilisateurs. On ne peut donc pas chercher tous les fichiers des utilisateurs dont le nom commence par f.
  4. Q: Je ne comprends pas à quoi sert exactement la commande split?  
    R: Comment faire pour mettre sur une clé USB un fichier dont la taille est supérieure à celle de la clé USB ? On découpe le fichier en morceaux (avec split) capables chacun de tenir sur la clé, ce qui permet de copier ensuite chaque morceau sur une clé différente. Lorsque l’on veut récupérer le fichier complet, on recolle (avec cut) dans le bon ordre les morceaux copiés sur les différentes clés. Ce n’est qu’un exemple...
  5. Q: Y-a-t’il une différence entre les deux commandes suivantes: find / -name passwd et locate passwd?  
    R: La commande find est celle qui est normalisée pour Unix. La commande locate est spécifique à GNU/Linux. D’autres part, la commande locate ne recherche que dans l’arborescence du système d’exploitation (/usr, /etc...), pas dans les comptes des utilisateurs. En outre, locate recherche dans une base de données mémorisant l’arborescence du système. Or, cette base de données n’est pas toujours à jour.
  6. Q: En quoi consiste l’archivage ? N’est-ce pas un moyen de compression ?  
    R: L’archivage permet de mettre en un seul fichier tous les fichiers d’une arborescence (typiquement un répertoire et ses sous-répertoires), avec la possibilité de compresser les fichiers de la dite arborescence, donc en réduisant la taille de l’archive pour pouvoir l’envoyer vers un autre destinataire plus facilement.
  7. Q: À quoi correspond ce qu’on appelle le listing d’un utilisateur... en ce qui concerne ses requêtes imprimante?  
    R: On utilisait autrefois ce terme parce l’utilisateur imprimait principalement des listings (code source de ses programmes, résultat de compilation, d’exécution...). Le terme « listing » utilisé est ici employé au sens générique pour représenter le résultat demandé par l’utilisateur quelle que soit sa demande (impression d’un fichier texte, d’une page Web, d’une image, d’un programme source ...).
  8. Q: Que fait la commande cd rep1;tar cf- . |(cd rep2; tar xf) ?  
    R: Cela revient à taper cd rep1 puis tar dont le résultat est envoyé sur la sortie standard: l’archive est donc envoyée en sortie. Le tube permet de récupérer le contenu de l’archive: on n’est donc pas passé par un fichier. Les parenthèses permettent de considérer les deux commandes qui suivent le tube comme une seule d’un point de vue utilisation des flots de communication. cd n’utilise pas l’entrée standard mais permet de changer de répertoire, la commande tar qui suit peut alors prendre l’archive et la déplier. On aurait pu écrire:
    • cd rep1
    • tar cf toto.tar .
    • cd rep2
    • tar xf toto.tar

    Résultat: en une seule ligne, copie d’une arborescence complète d’un endroit (rep1) à un autre (rep2), sans création de fichier intermédiaire.

  9. Q: Que veut-dire « verbeux » ou « mode verbeux »?  
    R: Beaucoup de commandes Unix sont « silencieuses », c.-à-d. que lorsqu’elles fonctionnent bien, elles n’affichent rien (par exemple les commandes tar ou gzip/gunzip). Ces commandes offrent souvent une option (par exemple l’option v pour tar et gzip) pour qu’elles affichent plus d’informations à l’écran. Testez sur un fichier toto existant gzip toto et gunzip -v toto.

 
 
9. Communications sous Unix
 

  1. Q: Comment transférer ses fichiers à partir de ou vers le serveur de Télécom SudParis?  
    R: Si vous êtes sous Windows, il faut utiliser un logiciel comme FileZilla. Si vous êtes sous Linux, vous pouvez utiliser les commandes sftp ou scp décrites dans cette section.
  2. Q: Qui peut m’expliquer le principe de FTP anonyme ?  
    R: C’est le fait d’accéder à un serveur FTP (ou du moins à certains répertoires dits publics) sans avoir un compte d’utilisateur avec un mot de passe spécifique, mais en utilisant un compte générique commun à tous.
  3. Q: Pourquoi un chiffrement à clef secrète est moins sûr qu’un chiffrement à clef publique?  
    R: Les algorithmes pour clef secrète sont moins robustes car ils sont utilisés avec des clefs plus petites.
  4. Q: Est-on obligé d’avoir dans son fichier known_hosts la clé publique de tous les ordinateurs que l’on utilise?  
    R: La clef publique permettant d’authentifier un client dépend de la machine. Le serveur ssh doit connaître les clefs de toutes les machines à partir desquelles l’utilisateur souhaite se connecter.
  5. Q: Pour plus de sécurité, il faut générer un couple de clés privée et publique et envoyer la clé publique sur le serveur. Mais, est-ce que le transfert même de cette clé est sécurisé?  
    R: Le transfert de la clef publique n’a pas besoin d’être sécurisé: elle est publique, donc pas besoin de la chiffrer. Au pire, si elle est corrompue, le client ssh ne pourra pas se connecter.
  6. Q: Lors de la manipulation des commandes ssh-add, ssh-agent après connexion à ssh.int-evry.fr, il m’est impossible de transférer ma clé RSA à l’aide de ssh-add, le message d’erreur m’indique « could not open a connection to your authentification agent ». Au fait comment lance-t-on un agent?  
    R: Vous n’avez probablement pas lancé l’agent. Relisez à nouveau les pages man sur ces commandes et voyez l’exemple de session suivant pour millot sur la machine augite (l’option -v de ssh permet de suivre les étapes successives de l’authentification et de voir passer l’agent...) :
    • ssh-add -l
    • Could not open a connection to your authentication agent.
    • ssh-agent bash
    • ssh-add -l
    • The agent has no identities.
    • ssh-add
    • Identity added: /inf/arc/millot/.ssh/id_rsa (/inf/arc/millot/.ssh/id_rsa)
    • Enter passphrase for millot@augite:
    • ssh-add -l
    • 1024 a8:df:.......:b9:f6:ee /inf/arc/millot/.ssh/id_rsa (RSA)
    • ssh -v ssh.int-evry.fr
    • OpenSSH_3.4p1 Debian 1:3.4p1-1.woody.3, SSH protocols 1.5/2.0, OpenSSL 0x0090603f
    • debug1: Reading configuration data /etc/ssh/ssh_config
    • [...]
    • debug1: authentications that can continue: publickey,password,keyboard-interactive
    • debug1: next auth method to try is publickey
    • debug1: userauth_pubkey_agent: testing agent key /inf/arc/millot/.ssh/id_rsa
    • debug1: input_userauth_pk_ok: pkalg ssh-dss blen 434 lastkey 0x80929d0 hint -1
    • debug1: ssh-userauth2 successful: method publickey
    • [...]

    previous     next 

INF, Télécom SudParis, CSC 3001, Sept. 2014