Vous êtes sur la page 1sur 32

Atelier Systèmes 2 ISET Tozeur

Guide du fascicule

Ce fascicule contient l’ensemble de travaux pratiques réalisés dans le cadre de


l’enseignement de l’unité « Systèmes 2 », il s’adresse aux étudiants de la deuxième année de
la licence appliquée en technologies de l’informatique.

Les travaux pratiques contenus dans ce support constituent un complément


pédagogique et scientifique pour préparer l’examen de certification en expérimentant
toutes les commandes et les utilitaires linux.

Ces travaux pratiques permettent d’illustrer précisément certaines parties du cours et


donnent aussi les moyens de mesurer l’autonomie. Ces manipulations concrètes,
permettront de former une première expérience significative et d’acquérir de véritables
compétences techniques sur des mises en situations réelles.

Ce support comporte six ateliers pratiques.

Page | 1
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Sommaire

Atelier 1 : Présentation & Installation de Linux………………………………………………..3

Atelier 2 : Matériel et démarrage de Linux………………………………………………………15

Atelier 3 : Installation et gestion de paquetages………………………………………………17

Atelier 4 : Systèmes de fichiers………………………………………………………………………..19

Atelier 5 : Commandes Unix…………………………………………………………………………….23

Atelier 6 : Programmation Shell……………………………………………………………………….28

Page | 2
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Atelier 1 : Présentation & Installation de Linux

Objectifs :

 L’étudiant doit être capable de créer une machine virtuelle et d’installer le


système d’exploitation Ubuntu sur cette machine.
 Durée : 1.5h

1. Qu’est-ce qu’une distribution Linux ?

Une distribution Linux, appelée aussi distribution GNU/Linux pour faire référence


aux logiciels du projet GNU, est un ensemble cohérent de logiciels, la plupart étant logiciels
libres, assemblés autour du noyau Linux.

Il existe une très grande variété de distributions, ayant chacune des objectifs et une
philosophie particulière. Les éléments différenciant principalement les distributions sont : la
convivialité (facilité de mise en œuvre), l'intégration (taille du parc de logiciels validés
distribués), la notoriété (communauté informative pour résoudre les problèmes),
l'environnement de bureau (GNOME, KDE…), le type de paquet utilisé pour distribuer un
logiciel (principalement deb et RPM) et le mainteneur de la distribution (généralement une
entreprise ou une communauté). Le point commun est le noyau (kernel) et un certain
nombre de commandes.

Liste des distributions Linux

On peut recenser, par ordre alphabétique, un certain nombre de distributions


GNU/Linux.

Les distributions majeures

Page | 3
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Il n'existe pas à proprement parler de distributions « majeures », mais certaines


distributions sortent plus particulièrement du lot par leur ancienneté ou leur rôle
fondamental. Ainsi, certains éléments (notamment les systèmes de paquetages) développés
pour ces distributions sont repris dans d'autres.

Debian 

Distribution non commerciale régie par le contrat social Debian. Elle se distingue par le
très grand nombre d'architectures soutenues et, de ce fait, par son cycle de développement
relativement long, gage d'une certaine stabilité.

Red Hat Enterprise Linux 

Distribution commerciale qui a créé le gestionnaire de paquets RPM utilisé également


par d'autres distributions.

SuSE Linux 

Développée aujourd'hui en deux versions dont SuSE Linux Enterprise pour les besoins


d'entreprise (avec de nombreuses certifications matérielles et logicielles). Basé à l'origine
sur Slackware, SuSE Linux puis SuSE linux Entreprise est la plus ancienne distribution
commerciale encore existante.

Des distributions communautaires et grand-public

Certaines des distributions précédentes sont développées par une communauté


(comme Debian ou Slackware) mais les distributions suivantes sont :

 soit des distributions dérivées de distributions commerciales (destinées


principalement aux entreprises), intégrant une forte dimension communautaire
et désormais toutes orientées vers le grand public ;
 soit des distributions visant un public plus néophyte, pour ces dernières le volet
communautaire est important, sans forcément participer au développement.

Page | 4
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Face aux communautés de développeurs-utilisateurs émergent des communautés de


simples utilisateurs, très actifs et prompts à s'entraider.

openSUSE 

Version libre et communautaire SuSE.

Fedora 

Version communautaire de Red Hat. Elle se veut particulièrement à la pointe de la


technologie d'où la prise en charge courte (13 mois) et un cycle de développement rapide.

Mandriva Linux 

Distribution française, dérivée de celle de RedHat, conçue pour être facile d'installation
et d'usage. Elle est très appréciée par les débutants. Elle proposait aussi un service
d'assistance commercial important. Initialement elle s'appelait Mandrake Linux. Elle est
aujourd'hui abandonnée.

Mageia 

Apparue en 2010, Mageia est une distribution communautaire gérée par une
association française, Mageia.Org. Mageia est un fork de Mandriva Linux, abandonnée en
2013. Elle est appréciée des débutants car elle propose de nombreux outils permettant la
configuration du système. Le support des versions est de 18 mois.

Gentoo 

Distribution qui se différencie par sa gestion des paquetages à la manière des


ports BSD. Ce mode de gestion des paquetages compile le code-source directement sur la
machine de l'utilisateur. De ce fait, Gentoo est à réserver aux utilisateurs plus avertis.

Ubuntu 

Distribution commerciale fournie par l'entreprise Canonical et dérivée de Debian.


Orientée grand-public à l'origine, elle existe maintenant en version entreprise. Ses versions

Page | 5
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

stables sont éditées suivant un calendrier strict, suivant un cycle de 6 mois pour des versions
dites « intermédiaires » et tous les deux ans pour des versions « supportées sur le long
terme » de durée de support de 5 ans. Ubuntu est disponible en live DVD. C'est une
distribution qui est devenue très populaire en peu de temps.

Univention Corporate Server (UCS) 

Distribution commerciale dérivée de Debian avec un système de gestion intégré pour


l'administration multiplateformes de serveurs, de services, de clients, de bureaux et
d'utilisateurs, ainsi que de machines virtuelles, exploitées sous UCS. UCS est également
compatible avec les fonctions fournies par Microsoft Active Directory pour l'administration
d'ordinateurs fonctionnant sous Microsoft Windows via l'intégration du logiciel open
source Samba 4.

PCLinuxOS 

Dérivée de Mandrake (devenue Mandriva Linux). Destinée à un public d'utilisateurs


novices, elle offre une très grande stabilité tout en fournissant régulièrement les paquets
stables les plus récents. Construite sur un modèle « rolling release » (distribution tournante),
des versions mises à jour sont publiées plusieurs fois par an pour les nouveaux utilisateurs.
Depuis 2009, des contributeurs ont créé des versions spécifiques pour les différents bureaux
les plus employés : Full Monty (une version KDE maxi avec des bureaux différenciés), Xfce,
Lxde, GNOME, et Openbox ainsi que des variantes dites « mini », comportant peu
d'applications.

2. Comment installer un système Linux

Dans le cas de notre atelier, et dans le cadre du respect des ordinateurs du laboratoire,
nous allons procéder à une installation virtuelle du système Linux.

Pour cela, nous allons utiliser un outil de virtualisation pour créer vos machines
virtuelles supportant le système Ubuntu.

Page | 6
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

VirtualBox est un logiciel gratuit, téléchargeable depuis Internet, qui permet


d'exécuter un système d'exploitation entier à l'intérieur d'un autre. Pour l’utiliser, il est
recommandé d’avoir un ordinateur avec un minimum 512 Mo, 1 Go ou plus de RAM. 

Création d’une machine virtuelle

Après avoir lancé VirtualBox à partir du menu Démarrer de Windows, cliquez sur Créer


pour créer une nouvelle machine virtuelle. Lorsque l'assistant Créer une nouvelle machine
virtuelle apparaît, cliquez sur Suivant.

Nommer la machine LPI_101, Spécifier le système d’exploitation Linux et choisir la


version Ubuntu.

Page | 7
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

VirtualBox va essayer de deviner combien de votre mémoire (ou RAM) à allouer à la


machine virtuelle. Si vous avez 1 Go ou moins de RAM, je vous conseille de suivre la
recommandation. Si, toutefois, vous avez plus de 1 Go, environ un quart de votre RAM ou
moins devrait être bon. Par exemple, si vous avez 2 Go de RAM, 512 Mo est bien à allouer. Si
vous avez 4 Go de RAM, 1 Go est bien à allouer. Si vous n'avez pas idée de ce que la RAM
est ou combien de celui-ci vous avez, allez-y avec la valeur par défaut.

Cliquer sur Suivant

Cocher Créer un nouveau disque dur, puis cliquez sur Suivant.

Page | 8
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Cocher VHD (Virtual Hard Disk) puis cliquer sur Suivant une autre fois.

Cocher Dynamically Allocated, puis cliquer sur Suivant.

Page | 9
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Fixer la taille du disque dur, par défaut 8 Go Cliquer sur Suivant une autre fois.

Cliquer sur Create.

Page | 10
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Cliquer sur Create une autre fois.

Installation de Ubuntu

Pour pouvoir installer sur la machine virtuelle le système d’exploitation Ubuntu, il va


nous falloir lui faire croire que l’image ISO d’installation est présente dans son lecteur CD.

Cliquez donc sur LPI_101 dans la liste des machines virtuelles, puis sur Configuration.
Dans la nouvelle fenêtre, sélectionnez « Stockage ». Ensuite, sélectionner Vide sous
Contrôleur IDE. Maintenant, cliquer sur l’icône du CD à côté de Lecteur CD / DVD puis sur
Choisissez un fichier de CD/DVD virtuel. 

Sélectionnez l’image ISO de Ubuntu sur le Bureau et cliquez sur « Ouvrir ».

Page | 11
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Une fois que vous l'avez sélectionné, cliquez sur OK.

Ensuite, double-cliquez sur votre machine virtuelle pour le faire démarrer.

Au premier écran, choisissez la langue désirée avec les flèches haut-bas, puis appuyez
sur la touche « enter »

Choisissez ensuite l’option « Installer Ubuntu », appuyez sur « enter », et patientez le


temps de chargement du système d’installation. Choisissez ensuite la langue, le français,
puis le fuseau horaire, Tunis, ensuite la disposition de votre clavier, par défaut, et enfin
choisissez le partitionnement assisté : cocher Utiliser le disque entier.

Page | 12
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

La dernière étape de l’installation vous demande de compléter votre identité. En effet,


une fois le système installé, il vous demandera votre login (le nom d’utilisateur), et le mot de
passe, taper user pour le login et user pour le mot de passe. Cliquer enfin sur Suivant et
Installer, puis patientez jusqu’à ce que qu’Ubuntu vous demande de redémarrer, ce que
vous allez faire en cliquant sur « Redémarrer maintenant ».

Avant de cliquer sur « Enter » pour achever l’installation, il faut retirer le CD


d’installation d’Ubuntu du lecteur de la MV, afin de ne pas reprendre l’installation à chaque
redémarrage. Faîtes donc un clic droit sur l’icône du disque en bas à droite de la machine
virtuelle, et cliquez sur « Désinstaller CD/DVD-ROM »

Page | 13
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Maintenant, l’installation de Ubuntu sur la machine virtuelle est terminé, vous pourrez


démarrer votre machine virtuelle LPI_101.

Page | 14
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Atelier 2 : Matériel et démarrage de Linux

Objectifs :

 Manipuler les périphériques de tout type, et obtenir des informations sur votre
matériel.
 manipuler les commandes du démarrage du Linux.
 Savoir résoudre plus facilement des problèmes concernant le matériel et
l’administration de la machine.
 Durée : 1.5h

Partie 1 : Architecture matérielle

1. Isolez l’adresse matérielle de votre carte graphique sur le bus PCI. Les cartes AGP et
PCI Express sont vues comme un bus PCI.

# lspci | grep -i vga

01:00.0 VGA compatible controller: nVidia Corporation GeForce


8600 GT (rev a1)

2. Obtenez plus de détails sur cette carte. Notamment, quel module la gère ? Ces
informations peuvent être obtenues avec le -v et en spécifiant uniquement la carte
avec le -s de lspci :

# lspci -s 01 :00.0 -v

3. Affichez toutes les informations relatives aux périphériques de type USB connectés à
la machine.

# lsusb

4. Comment affichez les messages du noyau lors du démarrage de linux ?

Page | 15
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

# dmesg

Ou

# more /var/log/dmesg

Partie 2 : Démarrage de Linux

1. Déterminer le niveau d’exécution de votre machine.

# runlevel

2. Modifier le niveau d’exécution de votre machine en passant au niveau 6.

# init 6

3. Si vous démarrez en mode graphique (niveau 5), modifiez /etc/inittab pour démarrer
au niveau 3. Changez la valeur de 5 à 3 sur la ligne initdefault et rebootez.

id:3:initdefault:

4. Listez les services qui démarrent au niveau 3 :

# ls -l /etc/init.d/rc3.d/S*

5. Avec la commande shutdown, éteignez l’ordinateur maintenant. Quel est le niveau


d’exécution activé ?

# shutdown -r now

Page | 16
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Atelier 3 : Installation et gestion de paquetages

Objectifs :

 Connaître les commandes d’installation du système et des paquetages.


 Durée : 1.5h

1. Consultez le contenu du fichier de configuration /boot/grub/grub.conf

# cat /boot/grub/grub.conf

Pour les commandes de gestion de paquetages, vous allez vous contenter des outils dpkg et
apt-get puisque vous travaillez sur une distribution Debian (Ubuntu).

2. Déterminez le nombre de packages DPKG actuellement installés sur votre poste de


travail.

$ dpkg - l | grep ^ii | wc -l

3. Vérifiez que le package virtualbox est bien présent sur votre système, puis
déterminez à quoi il sert à l’aide de sa description.

$ dpkg -l virtualbox

4. Pour supprimer un package Debian, utilisez l’option -r :

# dpkg -r virtualbox

5. Téléchargez le package DPKG de tuxpaint présent surle lien :


http://www.tuxpaint.org/download/, choisissez la dernière version.

Pour installer ce package Debian, utilisez le paramètre -i :

Page | 17
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

# dpkg -i tuxpaint.xxxxxxx.dpkg

6. APT est un gestionnaire de meta-packages : il gère les dépendances à votre place et


travaille sur des dépôts et non plus sur des packages individuels. Tuxpaint est présent
dans le dépôt des backports. Le but est de gérer ce dépôt et les installations
associées.

Vous devez modifier le fichier /etc/apt/sources.list et rajouter dedans la ligne

« deb http://www.backports.org/debian etch-backports main contrib non-free ».

L’url complète du dépôt contrib pour les i386 est :

http://www.backports.org/debian/dists/etchbackports/contrib/binary-i386/.

7. Mettez à jour la base locale APT ?

# apt-get update

8. installez uniquement tuxpaint.

# apt-get install tuxpaint

9. Mettez à jour votre système.

# apt-get upgrade

Page | 18
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Atelier 4 : Systèmes de fichiers

Objectifs :

 Maîtriser les commandes de partitionnement.


 Connaître l'organisation de l'arborescence standard des fichiers sous Linux.
 Maîtriser la création d'un système de fichiers sur une partition.
 Maîtriser la remise en état d'un système de fichiers endommagé.
 Savoir protéger les fichiers et les répertoires.
 Durée : 3h

Partie 1 :

Attention : vue l’importance des commandes à réaliser, vous allez utilisez durant la séance
de travaux pratiques la machine virtuelle lpi1 se trouvant sous le système windows 7.

1. Soit un disque dur de votre système disposant d’espace pour la création d’une
partition. Sur la machine virtuelle lpi1, il s’agit du premier disque IDE, appelé
/dev/hda. Trois partitions sont présentes : /dev/hda1, /dev/hda2 et /dev/hda3. Créez
une troisième partition étendue.

# fdisk /dev/hda

2. Créez une nouvelle partition en appuyant sur n puis [Entrée].

Créez une partition étendue en appuyant sur e puis [Entrée].

Comme numéro, saisissez 4 puis [Entrée] : il ne peut y avoir que quatre partitions
primaires.

Enfin, appuyez deux fois sur [Entrée] pour accepter les valeurs par défaut.

Page | 19
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

3. Créez ensuite une partition logique, selon le même principe, dans la partition
étendue. Elle portera le numéro 5 et occupera tout l’espace disponible.
4. Sauvez la table des partitions en appuyant sur w puis [Entrée]. Vous allez
probablement obtenir un message d’avertissement vous informant que la nouvelle
table n’est pas accessible.
5. Forcez la mise à jour de la nouvelle table des partitions avec partprobe :

# partprobe /dev/hda

6. Vérifiez dans /dev la présence du fichier /dev/hda5.

# ls -l /dev/hda5

7. Créez un système de fichiers de type ext2 dans /dev/hda5, sans options particulières:

# mkfs -t ext2 /dev/hda5

8. En fin de compte, il fallait le créer en ext3 pour profiter de la journalisation. Modifiez


le système de fichiers pour qu’il soit maintenant en ext3 :

# tune2fs -j /dev/hda5

Partie 2 :

1. Dans votre dossier personnel créer un dossier nommé droits et un document


monDoc.txt à l’intérieur de ce dossier.
2. Quels sont les droits d’accès sur le fichier que vous venez de créer pour l’utilisateur ?
le groupe ? les autres ?

$ ls -l

3. Convertir en octal les droits d’accès suivants :


 r w x // 7 = 1 * 4 + 1 * 2 + 1 * 1
 r – x // 5 = 1 * 4 + 0 * 2 + 1 * 1
 – w x // 3 = 0 * 4 + 1 * 2 + 1 * 1

Page | 20
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

4. Traduisez les octaux suivant en droits d’accès :


 1 // 1 = 0 * 4 + 0 * 2 + 1 * 1 => - - x
 4 // 4 = 1 * 4 + 0 * 2 + 0 * 1 => r - -
 6 // 6 = 1 * 4 + 1 * 2 + 0 * 1 => r w -
5. Modifier les droits sur monDoc.txt tel qu’il soit accessible en lecture pour tout le
monde (les accès et écriture et exécution sont laissés par défaut).

$ chmod ugo+r monDoc.txt

6. Modifier les droits sur le document tel qu’il ait les suivant : r w x r – x r – –

$ chmod 754 monDoc.txt

7. Supprimer les droits de lecture au groupe et aux autres utilisateurs.

$ chmod go-r monDoc.txt

8. Ajouter les droits d’exécutions aux autres utilisateurs.

chmod o+x monDoc.txt

9. Ecrire avec plusieurs façons, l’accès total du document par tous les utilisateurs.

$ chmod 777 monDoc.txt

$ chmod ugo+rwx monDoc.txt

$ chmod a+rwx monDox.txt

$ chmod ugo=rwx monDoc.txt

$ chmod a=rwx monDoc.txt

Partie 3:

Exercice1

Page | 21
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

1. Exécuter et interpréter la commande umask


2. Créer un répertoire REP1dans votre répertoire courant.
3. Donner le droit d’accès de REP1.
4. Taper la commande umask 204 REP2.
5. Créer le fichier REP2.
6. Donner le droit d’accès de REP2.
7. Donner le droit maximal de REP2.
8. Taper la commande umask 204 fich.
9. Donner le droit d’accès de fich.
10. Donner le droit maximal de fich.

Page | 22
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Atelier 5 : Commandes Unix

Objectifs :

 Maîtriser la ligne de commande.


 Connaître les caractères spéciaux et la majorité des filtres de texte disponibles
sur la ligne de commande.
 Durée : 3h

Partie 1 :

Soit l’arborescence suivante :

1. Créer l’arborescence ci-dessus.


2. Ecrire une ligne de commandes permettant d’afficher le contenu du répertoire
personnel /home/etudiant avec des détails sur les fichiers.
$ ls -l
3. Ecrire une ligne de commandes permettant d’afficher le chemin absolu du répertoire
courant.
$ pwd
4. Ecrire une ligne de commandes permettant de passer du répertoire personnel au
répertoire images.
$ cd images

Page | 23
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

5. Vous êtes dans le répertoire images, écrire une ligne de commandes permettant
d’afficher les fichiers qui commencent par le mot perso.
$ ls perso*
6. Ecrire une ligne de commandes permettant d’afficher les images de type gif.
$ ls *gif
7. Ecrire une ligne de commandes permettant copier le fichier cv.txt dans le répertoire
documents.
$ cp ~/cv.txt ~/documents
8. Ecrire une ligne de commandes permettant de supprimer le répertoire documents
avec son contenu.
$ rm –r ~/documents
9. Ecrire une ligne de commandes permettant de créer un lien symbolique nommé
lien_images vers le dossier images.
$ ln ~/images lien_images

Partie 2 :
1. Créer le fichier fichnote contenant les lignes suivantes :
Selmi Bilel 12 08 09
Arbi Lobna 09 15 12
Mahmoudi Salah 10 11 13
Aouini Menel 16 08 07

Le séparateur entre les champs étant la tabulation.


2. Ecrire une ligne de commandes permettant d’afficher le contenu du fichier fichnote.
$ cat fichnote
3. Ecrire une ligne de commandes permettant d’afficher toutes les lignes contenant la
chaîne de caractères « 09 » dans le fichier fichnote.
$ grep 09 fichnote
4. Ecrire une ligne de commandes permettant d’afficher toutes les lignes qui
commencent par le caractère « A » dans le fichier fichnote.
$ grep ^A fichnote

Page | 24
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

5. Ecrire une ligne de commandes permettant de récupérer la 1ère et la 2ème colonne


de fichnote.
$ cut -f1,2 fichnote
6. Ecrire une ligne de commandes permettant de récupérer la cinquième colonne de
fichnote.
$ cut -f5 fichnote
7. Ecrire une ligne de commandes permettant d’afficher les lignes du fichier fichnote
avec numérotation.
$ nl fichnote
8. Ecrire une ligne de commandes permettant d’afficher les 2 premières lignes de
fichnote.
$ head -2 fichnote
9. Ecrire une ligne de commandes permettant d’afficher les 2 dernières lignes de
fichnote.
$ tail -2 fichnote

Partie 3 :
Tous les commandes ci-dessous sont réalisés avec le fichier jeu_essai sont le contenu est :

Perl
perle
Parlant
parler
perl Parler parle perl langage

exe qwertz
qwertz alpha

exe qwertz
qwertz alpha

Langage
Language
02.03.05.03
01.234.5678
un deux trois quatre cinq six sept huit neuf
012356789

Page | 25
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Ecrire toutes les commandes grep permettant de satisfaire les demandes en question :
1. les lignes vides
grep ^$ jeu_essai
2. Mot terminé par "age"
grep "age\>" jeu_essai
3. Mot terminé par "guage" ou "gage"
grep "gu\?age\>" jeu_essai
4. Chaîne contenant "erl"
grep "erl" jeu_essai
5. Lignes terminées par "t"
grep t$ jeu_essai
6. Chaîne contenant les sous-chaînes "alpha" ou "exe"
grep -E "(alpha|exe)" jeu_essai
7. Ligne ne commençant pas par un chiffre
grep ^[^0-9] jeu_essai
8. Ligne commençant par une voyelle ou un chiffre
grep ^[0-9aeiaouAEIOU] jeu_essai
9. Ligne ne commençant pas par une voyelle
grep ^[^aeiaouAEIOU] jeu_essai

Partie 4 :
1. Dans un système Linux, quel est le processus qui n'a pas de père. Quel est son
PID?

2. À quoi servent les options -f et -L de la commande ps ?

3. Lancez la commande ps ax -f -L et décrivez les différentes colonnes affichéees.

4. Utilisez la commande pstree pour afficher l'arbre des processus en cours avec leur
PID.

5. Quelle option de pstree permet d'afficher les ancêtres d'un certain processus dont
le PID est donné en argument à la commande ?
Page | 26
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

6. Quelle option de pstree permet d'afficher l'arbre complet des processus en cours
(i.e., permet d'afficher toutes les occurrences de chaque processus) ?

7. Quel signal est lancé par défaut à la commande kill ?

8. Que font les signaux suivants : SIGQUIT, SIGKILL, SIGCHLD ?

9. Quel caractère permet de lancer une commande en arrière-plan ? Quelle


commande permet de lancer une commande en arrière-plan ?

10. Affichez la liste des processus actifs dans votre terminal courant en utilisant ps.

11. Quelles informations sont affichées par défaut lorsque vous lancez la commande
top?

12. Utilisez la commande top pour afficher la liste des processus en temps réel en
ajoutant les colonnes PID et UID dans l'affichage.

13. Lancez 3 fois la commande sleep en arrière-plan avec des arguments différents à
chaque fois.

a. Affichez la liste des travaux en cours. Que signifient les caractères + et -


dans le résultat obtenu ?

b. Lancez ensuite la commande sleep en avant-plan.

c. Reprenez la main dans votre terminal et affichez à nouveau la liste des


travaux en cours.

d. Relancez en arrière-plan la dernière commande sleep, que vous avez


suspendue auparavant.

e. Arrêtez l'exécution de la première commande sleep en utilisant son PID.

f. Arrêtez l'exécution de la deuxième commande sleep en utilisant son


numéro de travail.

Page | 27
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

g. Arrêtez l'exécution des deux dernières commandes sleep en utilisant la


combinaison de touches Ctrl+c

Atelier 6 : Programmation Shell

Objectifs :

 Ce TP a pour but de vous familiariser avec la programmation en shell sur


système Unix.
 Les shells (ou langages de commandes) assurent l'interface entre les
utilisateurs et le système. Sous Unix, il s'agit de véritables langages de
programmation interprétés. On peut distinguer les commandes externes, qui
entraînent la création d'un nouveau processus correspondant à l'exécution
d'un programme binaire et les commandes internes, qui sont des commandes
propres à l'interpréteur de commande.
 Durée : 3h

L'interpréteur de commandes Bourne-shell

Le Bourne-shell est le premier langage de commandes qui ait été développé sous UNIX. Vous
utilisez actuellement le C-shell (/bin/csh). Le C-shell est particulièrement intéressant pour son
mode interactif. Le Bourne-shell est plus adapté que le C-shell pour la programmation et
reste le shell le plus utilisé pour programmer.

Commande echo

Essayez les commandes suivantes :

$echo Bonjour
$echo Bonjour à tous !

Page | 28
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

Visualisation des valeurs des variables de l'interpréteur

Essayez les commandes suivantes :

$set
$echo $HOME
$echo $PS2

Affectation de valeur à une variable

Essayez les commandes suivantes :

x=a echo ${x}y


echo $x date
set d=`date`
x='123 4567 89' echo $d
echo $x liste= `ls`
echo $y echo $liste

Expansion des chaînes de caractères

Essayez les commandes :

$echo 'dddd $HOME dd'


$echo "dddd $HOME dd"

Exportation des variables

Vérifiez qu'une variable n'est pas automatiquement exportée dans un sous-interpréteur de


commandes. Pour l'exporter, il faut utiliser la commande export :

sh
set # pas de variable x
CTRL-D # sortie du sous interpreteur
export x
sh

Page | 29
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

set # la variable x est bien exportee


CTRL-D

Boucle for

Essayez les commandes :

$for i in a ee dx; do echo Hi! ; done


Vérifiez qu'en écrivant la commande for...done sur plusieurs lignes, l'interpréteur attend la
suite de la commande ; ce qui est materialisé par << l'invite secondaire >>> (voir la
variable $PS2). Vous devez obtenir quelque chose comme :

$ for i in aa ee dx
>do echo Hi!
>done
Hi!
Hi!
Hi!
$

Fichier de commandes

Faites de la commande for...done précédente un fichier de texte, par exemple cmd.sh.


Essayez d'exécuter cmd.sh :

$ ./cmd.sh
C'est impossible ; vous ne possédez pas le droit d'exécution sur le fichier de
commandes cmd.sh (vérifiez cela par un ls -l cmd.sh). Deux solutions s'offrent à vous.

1. Passer votre fichier de commandes en paramètre au Bourne-shell


2. sh cmd.sh
3. Changer les droits du fichier de commandes :
4. chmod 755 cmd.sh
Vérifiez le résultat par les commandes :

Page | 30
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

$ls -l cmd.sh
$ ./cmd.sh
Les fichiers de commandes peuvent être exécutés à partir du C-shell. Comme le C-shell
possède également un langage de commandes, il faut indiquer à la première ligne du fichier
le shell à utiliser :

#! /bin/sh
Le caractère # sert habituellement à introduire un commentaire.

Retour sur la boucle for

Remarquez l'usage possible en lecture de variable d'itération d'une commande for, par


exemple :

for i in 1 2 'a b' 4


do
echo $i
done
ou

for i in *
do
echo $i
done
Commande read

Essayez la commande read, en constituant un fichier de commandes du style :

echo '?'
read REP
echo "reponse $REP"
Instruction case

Ecrivez un fichier de commandes choix.sh, qui demande interactivement à l'usager s'il veut


afficher la date ou le répertoire de travail, analyse la réponse et exécute l'action demandée.
Exemple :

Page | 31
Mbarek & Ben Mahmoud
Atelier Systèmes 2 ISET Tozeur

$ choix.sh
(d)ate/(r)epertoire courant ? x
????
$ choix.sh
(d)ate/(r)epertoire courant ? r
/home/licence/duchmol/unix/tp2
$ choix.sh
(d)ate/(r)epertoire courant ?d
Lundi 24 novembre 2014 18:21:29 MEST 2001
Arguments d'un fichier de commandes

Utilisez les variables $# et $* et une boucle for pour développer une commande arg.sh qui


écrit sur la sortie standard :

 le nombre d'arguments qui a été passé à la commande ;


 le nom de chemin du programme (c'est-à-dire le nom de la commande) ;
 puis chacun des arguments à raison d'un par ligne.

Exemple :
$arg.sh 1 arg $HOME
Nombre de chaines: 3
arg.sh
1
arg
/home/soufiene
$

Page | 32
Mbarek & Ben Mahmoud