Vous êtes sur la page 1sur 11

Faculté des Sciences Exactes et Appliquées

Département d’Informatique
Cours de système d’exploitation II
Prof : Dr MBAIOSSOUM Bery (mbleouro@yahoo.fr)

TP- 1
Le but de ce TP est la prise en main des commandes de base de l’environnement
Linux en utilisant l’interface ligne de commande (CLI).

1. La documentation
Une description de toute les commandes est disponible avec la commande man
ou help. Pour en savoir davantage, taper man man,

2. Premier contact
Lancer un terminal de commandes.
Lorsque vous tapez les commandes, elles sont analysées et exécutées par un
interprète de commandes appelé Shell.
Tapez ls pour obtenir la liste des fichiers.

3. Exécution des Commandes


Une commande prend en entrée des options et/ou des paramètres. Elle peut
renvoyer de l’information à l’écran ou dans un fichier, modifier un fichier, ou
produire un message d’erreur.
a. Tapez les commandes suivantes et utilisez le manuel man pour expliquer
ce qu’elles font :
date
which date
cat /etc/passwd.
Le fichier /etc/passwd contient les informations liées aux utilisateurs de la
machine.
wc -l /etc/passwd
touch essai
ls
ls -l
ls -al
Si une commande ne rend pas la main, on peut arrêter le programme
correspondant en tapant ”CTRL C”.
b. Tapez la commande: dd
Que se passe-t-il ? Après avoir repris la main, utilisez le manuel pour
comprendre ce qui s’est passé.
Faculté des Sciences Exactes et Appliquées
Département d’Informatique
Cours de système d’exploitation II
Prof : Dr MBAIOSSOUM Bery (mbleouro@yahoo.fr)

TP- 2
Le but de ce TP est la manipulation des fichiers sous Linux en utilisant
l’interface ligne de commande (CLI).

Exercice 1. Certaines commandes, dont pwd, ls, touch, mkdir, cd et rm,


permettent d’explorer l’espace de travail personnel et de le modifier.
A l’aide du manuel (man ) ou help et en exécutant et en analysant le résultat de
chacune des lignes de commande suivantes, préciser le rôle de chacune de ces
commandes :
pwd
ls
ls -l
ls -a
ls -al
rm essai
ls -l
mkdir SEessais
ls -l
cd SEessais
pwd
ls
touch toto
ls -l
cd..
Que représentent les répertoires ”.” et ”. .” ?
pwd
ls -l
cd /etc
pwd
ls -l
which date
cd /bin
pwd
ls –l
cd
pwd
ls -l
Exercice 2 : Manipulation de fichiers
Revenez à votre répertoire personnel en tapant la commande cd.
1. Créez un sous-répertoire TP_unix.
2. Dans ce répertoire, créez un fichier ”monTexte.txt” contenant la phrase ”Il
fait bon de vivre au Tchad ”.
3. Tapez ls.
4. Modifiez le nom du fichier monTexte.txt en monTexte2.txt en tapant la
commande mv monTexte.txt monTexte2.txt
5. Tapez ls.
6. Créez une deuxième répertoire test dans votre répertoire racine, et un
sous- répertoire tst dans le répertoire test.
7. Déplacez le fichier monTexte2.txt précédent dans le répertoire test/tst.
8. En utilisant la commande cp, copiez le fichier monTexte2.txt dans le
répertoire racine.
9. Supprimez le fichier monTexte2.txt du répertoire test/tst en utilisant la
commande rm.
10.Vérifier le résultat

Exercice 3 : Editeurs de texte


Un éditeur de texte permet de saisir du texte dans un fichier afin de le conserver.
Il est utilisé pour la manipulation des fichiers de configuration. La commande
cat constitue un éditeur (très) simplifié.
1. Taper :
cat > monFichier (Enter)
et entrer le texte à conserver dans le fichier (Enter)
Faire CTRL D pour terminer la saisie
2. Tapez la commande:
ls –l
3. Tapez la commande:
cat monFichier
cat > monFichier2

L’option > monFichier2 indique à la commande cat que les informations


produites par cat ne seront pas affichées à l’écran, mais seront stockées dans le
fichier monFichier2.

Dans le deuxième appel à cat, quel le statut du mot monFichier2 ? Expliquer.


Il existe bien sûr des éditeurs de texte plus sophistiqués comme vi ou emacs.
Faculté des Sciences Exactes et Appliquées
Département d’Informatique
Cours de système d’exploitation II

TP- 3
Le but de ce TP est gérer les utilisateurs dans un environnement Linux en
utilisant l’interface ligne de commande (CLI).

Exercice 1. Création des groupes


Un groupe est, aussi pour Linux, un ensemble d'utilisateurs qui partagent les
mêmes fichiers et répertoires.
a. Créer deux groupes GINF et GFIA
b. Editer le fichier /etc/group en tapant less /etc/group et vérifier si ces deux
groupes y sont
c. Quels sont les gid de vos groupes (GINF et GFIA)
d. Ajouter un groupe GAUTRES
e. Editer le fichier /etc/group en tapant less /etc/group et vérifier si ce
groupe est bien ajouté
f. Quel est le gid de GAUTRES
g. Supprimer GAUTRES
h. Editer le fichier /etc/group vérifier si ce groupe est bien supprimé

Exercice 2. Création des groupes


a. Lancer un terminal de commandes.
b. Créer un utilisateur fia appartenant au groupe GFIA en utilisant la
commande useradd comme : useradd fia -u 1200 -g GFIA -s /bin/bash
c. Créer deux utilisateurs inf1 et inf2 appartenant au groupe GINF en
utilisant la commande useradd nomUtilisateur et répondre au question du
système
d. Editer le fichier /etc/passwd en tapant less /etc/passwd et vérifier si ces
trois utilisateurs y sont
e. Quels sont les répertoires personnels de ces trois utilisateurs ?
f. Identifier leur shell
g. Définir un mot d passe pour chaque utilisateur créé
h. En utilisant la commande su, connectez-vous tour à tour avec chaque
compte créé dans de différents terminaux ou tty et tester les commandes :
id , w, who et users
i. Dire ce que fait chacune de ces commandes
j. Lister tous les groupes de inf1, inf2 et fia
Faculté des Sciences Exactes et Appliquées
Département d’Informatique
Cours de système d’exploitation II
Prof : Dr MBAIOSSOUM Bery (mbleouro@yahoo.fr)

Travaux Pratiques - 4
Le but de ce TD est l’étude du système de fichier UNIX

Exercice 1 : Manipulation du contenu d’un fichier texte


1. La commande suivante montre le contenu d’un fichier texte : login@host:˜/$ cat /proc/cpuinfo
2. Quelle sont les informations contenues dans ce fichier ?
3. À l’aide des commandes cat ou less identifiez dans le fichier /proc/cpuinfo le nombre de fois
ou le mot ’cpu’ apparait
4. La commande grep ’cpu’ /proc/cpuinfo permet d’afficher les lignes du fichier /proc/cpuinfo où
le mot ’cpu’ apparait. Vérifiez qu’il y en le bon nombre ?
5. L’option -v permet d’inverser son comportement. Au lieu d’afficher les lignes qui présentent
le motif, grep affiche alors les lignes qui ne présentent pas le motif. Affichez les lignes du
fichier /proc/cpuinfo ne présentant pas le mot ’cpu’.
6. Proposez une commande permettant d’afficher les premières 5 lignes
7. Proposez une commande permettant d’afficher les dernières 5 lignes

Exercice 2 : Le système de fichier UNIX est organisé selon une arborescence dont la racine est ”/”.
Le répertoire d’accueil (home directory) est le répertoire dans lequel on se trouve au début. Il est noté
∼. Par exemple, la commande cd ∼ ramène dans le répertoire d’accueil.
Le répertoire courant est celui dans lequel on se trouve à un moment donné.
1. Créez dans votre répertoire d’accueil un répertoire rep.
2. Allez dans ce sous-répertoire (commande cd).
3. Créez les sous-répertoires work et play.
4. En utilisant la commande ls -l, affichez la liste des fichiers du répertoire rep avec les détails.
5. En utilisant la commande ls, affichez la liste des fichiers qui commencent aussi par ”.”.
Quelle option avez-vous utilisée ?
6. Quels sont les fichiers contenus dans ce répertoire ?
7. Copiez le fichier /etc/passwd dans votre répertoire d’accueil.
8. Déplacez-le dans votre sous-répertoire play.
9. On se place maintenant dans le répertoire play. Créez dans ce répertoire un fichier toto
contenant la phrase ”hello world”, en utilisant l’éditeur de votre choix.
10. Créez un lien symbolique tata vers le fichier toto.
11. Tapez ls -l. Qu’observez-vous ?
12. En utilisant la commande cat, visualisez le contenu du fichier tata. Qu’observez-vous ?
13. Modifiez le fichier toto en rajoutant le mot ”of INF” après ”hello world”.
14. Visualisez le contenu du fichier tata. Qu’observez-vous ?
15. Créez un répertoire repOther, et créez dans ce répertoire un fichier de nom ”.f1”.
16. Remontez d’un niveau dans l’arborescence et essayez de supprimer le répertoire repOther.
Que se passe-t’il ?
17. Affichez le contenu du répertoire repOther. Utilisez l’option -a.
18. Comment arriver `a supprimer le répertoire repOther ?
19. Placez-vous dans le répertoire play.
20. Expliquez les notions de chemin absolu et chemin relatif et donnez un exemple de leur
utilisation respective pour passer du répertoire play au répertoire d’accueil.
Exercice 3 : Noms génériques et méta-caractères
1. Que fait la commande ls * ?
2. Le répertoire /usr/include contient les fichiers d’entête des programmes applicatifs. Créez un
répertoire nommé include dans votre répertoire d’accueil.
3. En utilisant une seule commande, y copier les fichiers du répertoire /usr/include dont le nom
commence par std et se termine par .h.
4. Afficher la liste des fichiers de /usr/include dont le nom commence par a, b ou c et se termine
par .h.
5. Afficher la liste des fichiers de /usr/include dont le nom comporte 3 caractères suivis de .h
6. La commande echo affiche simplement ses arguments, après éventuelle expansion des
métacaractères et des variables par le shell.
Que fait echo PATH ? et echo $PATH ? 1
7. Comment afficher la liste des noms de fichiers du répertoire courant avec echo ?

Exercice 4 : Retour sur l’identification et les droits


1. Au moyen de la commande id, affichez votre UID et votre GID ? Comparez-le avec celui de
votre voisin de table. Qu’en concluez-vous ? Comparez-les avec celui de l’utilisateur root.
Qu’en concluez-vous ?
2. Quels sont vos droits sur le répertoire racine /, root, /tmp, sur votre répertoire ˜/, et celui de
votre voisin de table ˜/../login_voisin.
3. Pouvez-vous lire les données contenue dans le répertoire de votre voisin. Quelle commande
permettrait de le faire ? Qui doit lancer la commande ?
4. Donnez les commandes octale et alphanumérique de changement de droits permettant :
a. d’autoriser aux membres de votre groupe et aux "autres" l’accès en lecture aux images
du répertoire donnees_tdtp2/images.
b. de donnez les droits d’écriture aux membres de votre groupe sur le fichier
donnees_tdtp2/command_line.txt
c. de vous (le propriétaire) retirer toute possibilité de supprimer le fichier
donnees_tdtp2/0readme
5. Imaginez comment donner à votre voisin un accès sous votre répertoire personnel à un
répertoire dans lequel il aurait les droits d’écriture sur un fichier spécifique, que vous ne
pourriez-vous que lire (mais pas modifier)
6. Identifiez le propriétaire, le groupe et les différents droits des fichiers contenus dans le
répertoire /bin ? Quels sont vos droits sur ces fichiers ? Ces fichiers on le droit x. Que pouvez-
vous en conclure ?
7. A votre avis, que se passe-t-il en fait lorsque vous saisissez une commande telle que ls ?
Faculté des Sciences Exactes et Appliquées
Département d’Informatique
Cours de système d’exploitation II
Prof : Dr MBAIOSSOUM Bery (mbleouro@yahoo.fr)

TP 5
Recommandation : Pour toute commande, vérifiez la syntaxe et les fonctionnalités avec man
(la documentation en ligne) : par exemple man ls
Exercice 1 : Comptes utilisateurs
1. Créez deux comptes utilisateurs appelés etudiant et inf3 si ce n’est pas encore fait
2. Connectez-vous avec chacun de ces comptes et taper quelques commandes pour vous
assurez que ces comptes sont opérationnels.

Exercice 2 : ACL
Essayez de réaliser cet exercice en réglant le compte etudiant (le compte inf3 peut être utilisé
s’il y a besoin). Il s'agit de définir les ACL pour se protéger.
1. créez une arborescence des fichiers suivante dans votre home directory :

2. Tous ces répertoires doivent appartenir à etudiant (pas à inf3!) et ils sont en lecture
seule, et les fichiers contenus doivent être protégé. Seul le répertoire binaire accepte
que inf3 puisse y écrire des fichiers.
a. Règles les ACLs si elles ne sont pas conformes et vérifier
b. créez deux f1.c et f2.c dans C
c. visualisez le contenu de C
d. créez deux f1.java et f2.java dans java
e. visualisez le contenu de java
f. créez un fichier nommé b1.exe dans binaire
g. visualiser le contenu de binaire
3. connectez-vous comme inf3 (faire un su inf3 ou ouvrir un autre terminal pour inf3)
a. essayez d’accéder au répertoire C. Que constatez-vous ?
b. listez le contenu de C
c. essayez de lire le contenu de f1.c. Que remarquez-vous ?
d. inf3 peut-il ajouter à f1.c la phrase : « c’est génial » ?
e. accédez au répertoire binaire et ajoutez au fichier b1.exe le texte « c’est
merveilleux »

Exercice 3 : Liens
Essayez de réaliser cet exercice en réglant le compte etudiant (le compte inf3 peut être utilisé
s’il y a besoin). Il s'agit de définir les ACL pour se protéger.
1. Copiez le fichier /etc/passwd dans votre directory.
2. Créez deux liens sur ce fichier passwd1 (physique ou lien en dur) et passwd2
(symbolique)
3. vérifiez par ls -l les différences.
4. Comparez avec l'outil stat.
5. Modifiez les droits de passwd en accordant l’écriture au group.
6. Vérifiez les droits des trois fichiers?
7. Ajoutez la phrase « notre TP devient intéressant pour notre groupe » dans passwd2.
8. Vérifiez le contenu de passwd1 et passwd.
9. Supprimez le fichier passwd.
10. Vérifiez le détail des fichiers pass*.
11. Faites un cat de passwd1 et de passwd2. Que constatez-vous ?
12. Créez un lien sur un répertoire (binaire par exemple). Quel peut être l'intérêt de cette
action
13. Consultez le répertoire /usr/src. Que constatez-vous ?
14. Cherchez comment faire apparaître les inodes avec ls.
15. Est ce que plusieurs noms dans le file system peuvent pointer sur la meme inode ?
16. Créez un répertoire test. Regardez l'inode de ce répertoire.
17. Créez des fichiers dans ce répertoire. Regardez toutes les inodes de ce répertoire test.
18. Consultez le numéro d'inode de /usr. Remarquez le nombre de liens qui pointe sur ce
répertoire !!!
19. Au démarrage, certaines distributions Linux utilise un système hérité du System V. Il
s'agit d'un répertoire /etc/rc.d qui contient des sous répertoires correspondant aux
différents niveaux de démarrage de la machine (configurés dans /etc/inittab). Les
modes de démarrage habituels sont 3 ou 5.
a. Visitez tous ces répertoires et essayez de comprendre le mode de
fonctionnement du démarrage System V, et ce qui se passe dans ces répertoires
b. Quels sont le type de fichier de ces répertoires ?
Faculté des Sciences Exactes et Appliquées
Département d’Informatique
Cours de système d’exploitation II
TP 6
Exercice 1 : Gestion des processus
Afin d’illustrer la gestion des processus nous allons utiliser la commande sleep pour simuler
l’exécution de programmes dont l’exécution n’est pas immédiate. Pour se rappeler de son
fonctionnement vous pouvez utiliser la commande man.
1. Évaluez l’instruction sleep 10000 puis tapez Ctrl C . Que se passe-t-il ?
2. Évaluez l’instruction sleep 10000 & (n’oubliez pas le caractère &). Que se passe-t-il ?
3. La commande ps permet d’afficher la liste de processus qui s’exécutent sur votre
ordinateur. Un processus s’exécutant sous Linux est identifié par un numéro de
processus, et par un propriétaire (celui qui a lancé le processus). Identifiez ces deux
données lors de l’appel des commandes suivantes, donnez un explication à la
différence des affichages (utilisez le man si nécessaire) : ps et ps -ef
4. Quel est le numéro de processus associé à la commande sleep 10000 & ?
5. La commande kill permet de « tuer » (supprimer) un processus. Sa syntaxe
d’utilisation est la suivante : kill PID où PID (Process ID) doit être remplacé par le
numéro du processus à supprimer.
6. Quelle commande permet de détruire le processus associé à la commande sleep 10000
&?
7. Tapez la commande ed dans le terminal. Quel est l’effet sur la ligne de commande ?
Pouvez-vous saisir de nouvelle commandes ?
8. Après avoir lancé ed (celui-ci étant en cours d’exécution), que se passe-t-il si on tape
Ctrl Z dans le terminal qui a lancé ed? Quel est l’effet sur le programme ed (utilisez
ps pour suivre l’état des processus) ? Que se passe-t-il si vous tapez bg ?
9. Que fait la commande top ?
10. Exécutez la command ps -ef.n Examinez comment est construite la forêt de
processus. Repérez comment sont agencés les processus qui gèrent vos terminaux
entre eux.
Exercice 2 : Redirection de l’entrée ou la sortie d’un processus
1) Faites la liste détaillée (option -l) du contenu du répertoire /usr/lib. Quel est le premier
fichier de ce répertoire dans l’ordre alphabétique ?
2) Redirigez la sortie de la commande précédente vers un fichier liste, puis affichez le
contenu de ce fichier avec la commande less par exemple. Quel est l’avantage de cette
méthode ?
3) Redirigez l’entrée standard de la commande cat vers le fichier liste et observez ce qui
se produit. Comme pour un certain nombre de commandes, le même résultat peut être
obtenu en passant le fichier liste directement en argument de la commande cat (sans
symbole de redirection). Essayez.
4) Qu’y a-t-il dans le fichier liste si l’on exécute maintenant la commande : echo une
phrase > liste ?
5) La syntaxe >> fic a un comportement différent. Testez-la comme dans la question
précédente et concluez.
6) Sans utiliser d’éditeur, ajoutez au fichier liste la ligne « C’était vraiment très
intéressant ! »
7) Qu’y a-t-il dans le fichier liste après l’exécution de la commande suivante : (echo
"Bonjour" > liste ; echo "Au revoir" > liste ; ls -al >> liste) || echo "Bonjour" > liste
8) Et si l’on remplace || par && ?
9) On souhaite copier liste dans liste-bis sans utiliser la commande cp. Comment peut-on
procéder ?
10) Que se passe-t-il lorsqu’on exécute la commande ''cat <liste> fic'' ? Comment peut-on
expliquer ce résultat ? En déduire le résultat de la commande ''cat < liste >> fic'' (sans
la taper !) ?
Exercice 3 : Erreur standard et sortie standard
Nous avons vu comment rediriger l’entrée ou la sortie standard d’un processus vers des
fichiers quelconques. Pour rediriger la sortie standard d’erreur, il faut utiliser une syntaxe
explicite faisant apparaître son numéro de descripteur, autrement dit la syntaxe 2>.
1. Choisissez un nom de fichier qui n’existe pas (par, FacF) et testez la commande ls
FacF. Que se passe-t-il ?
2. Prédisez le résultat de la commande ls FacF > toto puis exécutez-la. Que se passe- t-il
?
3. Que contient le fichier toto?
4. Comment modifier la ligne précédente pour que le message d’erreur s’écrive dans le
fichier erreurs ?
5. Écrivez une ligne de commande qui liste le répertoire courant et un répertoire
inexistant
6. (par exemple FacF) et stocke la sortie standard dans liste et les erreurs dans erreurs.
Vérifiez le résultat.
7. On souhaite maintenant qu’une commande écrive son résultat dans le fichier resultat si
elle s’exécute sans erreur et ses messages d’erreur dans le fichier /dev/null sinon.
Testez avec une commande qui fonctionne et une autre qui produit une erreur.
8. Quel est le contenu du fichier /dev/null ?
Exercice 4 : Tubes
1) Documentez-vous sur les commandes sort et grep.
2) Que fait la ligne de commande ls /usr/bin | grep em?
3) Triez le contenu de votre répertoire personnel (home directory) par ordre
alphabétique.
4) En une seule commande composée, cherchez dans /bin tous les noms de fichier
contenant la lettre a et triez-les par ordre alphabétique inverse.
5) Donner les nombres de mots et de lignes obtenus à la question 4.
Faculté des Sciences Exactes et Appliquées Département d’Informatique
Cours de système d’exploitation II
Prof : Dr MBAIOSSOUM Bery (mbleouro@yahoo.fr)
TP 7 : les scripts
L’objectif de ce TP est d’apprendre à écrire et manipuler les scripts bash

Exercice 1
1. Ecrire un script bash qui prend un fichier ≪ Fichier1 ≫ en argument et vérifie si le fichier
existe, si oui il le renomme en ≪ Fichier2 ≫ sinon il affiche, ≪ Fichier1 n’existe pas ≫.
2. Ecrire un script bash qui prend en argument le nom d’un répertoire et vérifie si ce répertoire
existe : si oui il affiche ≪répertoire existant ≫ sinon ≪ répertoire inexistant ≫.
3. Ecrire un script bash qui teste deux entiers nb1 et nb2 et affiche ≪ nb1 est supérieur à nb2
≫ si c’est le cas et ≪ nb1 est inferieur ou égal a nb2 ≫ sinon.
4. Ecrire un script bash qui permet de vérifier si deux chaines sont identiques (prenez par
exemple S1="Bash" et S2= "Script"). Essayer ensuite avec S1=''Bash" et S2= "Bash*".
5. Un script est une commande qui peut récupérer son nom dans la variable '$0', et les
Paramètres passés sont stockes dans les variables '$1', '$2', … Grâce a ces variables
spécifiques, réécrire un script dont l’exécution vous rappelle son nom et vous renvoie la liste
de ses arguments.

Exercice 2
Ecrire un programme appelé copie qui copie un fichier dans un autre. Le programme peut
avoir un fonctionnement ressemblant que celui de la commande UNIX cp:
copie fich1 fich2 //pour copie le fichier fich1 en fich2.

Exercice 3
1. Ecrire un programme qui stocke dans un fichier la liste des étudiants d’une classe et leur
note
d’examen. Par exemple, le fichier pourra contenir:
paul 15
pierre 12
Ali 11
jean 18
Le programme devra demander successivement le nom de l’étudiant et sa note, et
recommencer tant que le nom est différent d’un code de sortie, par exemple exit.
2. Ecrire un autre programme qui lise le fichier précédent et affiche la liste des étudiants et
leur note, ainsi que la moyenne de la classe.

Exercice 4 : Ecrire un script bash qui permet d'afficher tous les fichiers qui vous
appartiennent et qui ont comme extension '.txt'. Vous donnerez en plus le nombre de fichiers.
Vous gérerez les fichiers dont le nom comporte un ou plusieurs espaces.

Exercice 5 : Ecrire un script bash qui programme bash qui utilise l’instruction until et qui
affiche tous les multiples de 2 inférieur à un nombre que l’utilisateur lui fournit.

Exercice 6 : Ecrire un script bash qui constitue une calculatrice basique.

Vous aimerez peut-être aussi