|
|
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
- 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.
- 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.
- 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.
- 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é...
- 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.
- 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.
- 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.
-
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.
- 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.
- 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.
- 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
-
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.
- 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).
- 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.
- 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.
- 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.
-
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.
-
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!
- 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.
- 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 ».
- 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.
- 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).
- 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).
- Q: Comment sortir de la commande man ?
R: Avec la touche q.
- 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.
- 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.
- 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
- 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.
- 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.
- 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.
- 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.
-
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:
- deux fichiers au même contenu, c.-à-d.
un original et une copie obtenue par cp,
- 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).
- 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.
- Q: Qu’est-ce qu’une structure de 64 octets?
R: Un endroit de stockage qui fait 64 octets,
soit 64 ∗
8 bits.
- 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.
- 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.
- 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.
- 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)
crw−rw−rw−1 root root 4, 7
2002-08-12 14:55 /dev/tty7
2) ls −l /dev/hda1 (Disque
: mode bloc)
brw−rw−−−−1
root disk 3, 0 2002-03-14 22:51 /dev/hda1
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
-
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:
- traverser les systèmes de
fichiers,
- liens sur des répertoires,
- liens indépendants de
l’existence de la cible (ce qui permet d’anticiper par exemple une
installation de logiciel).
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
- 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.
- 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.
- Q: Comment taper la barre verticale (pipe) ?
R: Appuyer sur les touches Alt-Gr et 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)".
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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.
-
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:
- ps -al
montre bien vos processus;
- 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à.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- 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:
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é ».
- 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.
- 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...
- 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.
- 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.
- 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 ...).
-
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.
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
-
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
|
|