Beruflich Dokumente
Kultur Dokumente
Faculté Polydisciplinaire
Département de Mathématiques et Informatique
Beni Mellal
Système d’exploitation I
SMI
Semestre 3
2019/2020
Anouar DARIF
Anouar DARIF
Système d’exploitation I
Système d’exploitation I
SMI_S3
SMI_S3
Introduction sur les systèmes d’exploitation
Rappels sur le matériel
SMI_S3
2
SMI_S3
Introduction sur les systèmes d’exploitation
Rappels sur le matériel
• La carte mère
La carte mère est une plaque de résine contenant à l'intérieur et sur les
deux faces une fine couche de cuivre sur laquelle est imprimé le circuit
imprimé, On y trouve les éléments suivants:
Système d’exploitation I
Le microprocesseur
La mémoire vive RAM(Random Access Memory): La mémoire vive
RAM représente le lieu de travail dans un ordinateur à savoir qu’un
programme stocké sur le disque dur est chargé en mémoire centrale
où ses instructions seront accédées une à une pour être exécutées
par le processeur. La RAM est une mémoire volatile c'est-à- dire que
son contenu serait perdu en cas de coupure d’électricité
La mémoire morte ROM(Read Only Memory): Elle contient les
Anouar DARIF
Une unité flottante pour le calcul des opérations sur les nombres
réels.
La mémoire cache: c'est une mémoire de petite taille, à accès plus
rapide que la mémoire principale. Elle permet au processeur de se
"rappeler" les opérations déjà effectuées auparavant. La taille de la
mémoire cache est généralement de l'ordre de quelques centaines
de Ko. Ce type de mémoire résidait sur la carte mère, sur les
ordinateurs récents ce type de mémoire est directement intégré dans
le processeur.
Anouar DARIF
OS
Anouar DARIF
Bios
Matériel 8
SMI_S3
Introduction sur les systèmes d’exploitation
Rappels sur le matériel
OS
Pilotes
Anouar DARIF
Matériel
9
SMI_S3
Introduction sur les systèmes d’exploitation
Fonctions et caractéristiques d’un SE
Système d’exploitation I
Anouar DARIF
10
SMI_S3
Introduction sur les systèmes d’exploitation
Fonctions et caractéristiques d’un SE
Gestion du processeur
Le système doit gérer l'allocation du processeur aux différents
programmes pouvant s'exécuter.
Système d’exploitation I
Gestion de la mémoire
Le système doit gérer l'allocation de la mémoire centrale entre les
différents programmes pouvant s'exécuter. La gestion de la mémoire se
fait selon le principe de la mémoire virtuelle. A un instant donné, seules
sont chargées en MC, les parties de code et données utiles à l'exécution
Gestion de la concurrence
Plusieurs programmes coexistent en mémoire centrale et peuvent
vouloir communiquer pour échanger des données . Il faut donc
synchroniser l'accès aux données partagées afin de maintenir leur
Anouar DARIF
doivent être stockées sur une mémoire de masse (disque dur, disquette,
USB, CD...)
Gestion de la protection
Le système doit fournir des mécanismes garantissant que ses
ressources (CPU, mémoire, fichiers) ne peuvent être utilisées que par les
programmes auxquels les droits nécessaires ont été accordés. Il faut
protéger le système et la machine des programmes utilisateurs (mode
d'exécution utilisateur et superviseur
Anouar DARIF
12
SMI_S3
Introduction sur les systèmes d’exploitation
Les principaux systèmes d'exploitation
MS-DOS est le plus connu des premiers systèmes d'exploitation
pour PC
• Il est mono-utilisateur et mono-tâche. On a du greffer des
Système d’exploitation I
16
SMI_S3
Système d'exploitation UNIX
Caractéristiques d’UNIX
Portabilité : écrit en langage de haut niveau C.
Multi-utilisateurs : Plusieurs utilisateurs peuvent se connecter et
travailler en même temps. Chaque utilisateur a son environnement
Système d’exploitation I
personnel.
Multi-tâches : plusieurs tâches simultanément, gérées par un
mécanisme préemptif.
Interactif : Il est possible de dialoguer avec l'ordinateur, de lancer des
processus (tâches) en arrière plan et en mode différé (batch).
Un système de fichiers hiérarchisé: organisé en arborescence
Un mécanisme de protection - identification des utilisateurs par mot
de passe - protection des fichiers (droits d’accès) - Un super-
Anouar DARIF
utilisateur ( le root)
17
SMI_S3
Système d'exploitation UNIX
Caractéristiques d’UNIX
18
SMI_S3
Système d'exploitation UNIX
Structure d’UNIX
Système d’exploitation I
21
SMI_S3
Système d'exploitation UNIX
Utilisateur et accès au système
L’utilisateur appartient à un groupe donné, par défaut, il a les
mêmes droits que son groupe.
Pour déterminer les droits sur un fichier donné, on distingue 3
parties :
Système d’exploitation I
• L’utilisateur (user),
• Son groupe ( group)
• Les autres (others).
Les droits sont :
• la lecture,
• l’écriture
• l’exécution.
Anouar DARIF
Le super user (root) est un utilisateur qui a tous les droits sur le
système, il s’occupe de l’administration du système ( entre autres
22
ajouter de nouveaux utilisateurs).
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Le système de fichiers UNIX est sous forme d’arborescence dont la
racine est ‘‘/’’.
Système d’exploitation I
• Fichiers répertoires
ce sont des fichiers conteneurs qui contiennent des références à
d'autres fichiers. Véritable charpente de l'arborescence, ils permettent
d'organiser les fichiers par catégories
• fichiers spéciaux
situés dans /dev, ce sont les points d'accès préparés par le système aux
périphériques..
Anouar DARIF
26
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Organisation des fichiers
• / : le répertoire racine
• /bin : les fichiers exécutables (en binaire) (initialisation du système
Système d’exploitation I
+ commandes "essentielles")
• /boot : le noyau vmlinuz et les fichiers de démarrage
• /dev : répertoire de fichiers spéciaux, qui servent de canaux de
communication avec les périphériques (disques, adaptateur réseau,
cartes son etc...)
• /etc : les fichiers de configuration du système et les principaux
scripts de paramétrage
/etc/rc.d scripts de démarrage du système
Anouar DARIF
28
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Organisation des fichiers
• /root : répertoire personnel du super-utilisateur root
• /sbin: les commandes de base nécessaires a l'administration
Système d’exploitation I
/usr/doc : la doc.
/usr/etc :des fichiers de config. 29
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Organisation des fichiers
/usr/games :les jeux.
/usr/include :les fichiers d'en-tête pour la programmation.
Système d’exploitation I
30
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Organisation des fichiers
/usr/spool :généralement un lien symbolique vers /var/spool.
/usr/src :les sources de certains logiciels, principalement le
Système d’exploitation I
noyau de Linux.
• /var : données variables liées à la machine (fichiers d'impression,
traces de connexions http, smb …)
/var/catman :les pages du manuel décompressées (ça se fait à la
demande).
/var/lib :des bases de données, des fichiers de config...
/var/local :complète /usr/local de la même façon
que /var complète /usr.)
Anouar DARIF
31
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Organisation des fichiers
/var/lock :des fichiers qui servent à marquer l'utilisation de
certaines ressources. Par exemple, quand un logiciel se sert du
modem, il crée un fichier ici pour le signaler.
Système d’exploitation I
• Exercice
Dans la hiérarchie précédente, exprimez les chemins suivants:
1. absolu pour prof1
2. Absolu pour etc
3. Absolu pour prof
4. Relatif à log pour acces.dat
5. Relatif à prof pour acces.dat
Anouar DARIF
37
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Chemin absolu et chemin relatif
Système d’exploitation I
40
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Les liens
• Plutôt que de faire plusieurs copies d'un même fichier pour plusieurs
utilisateurs, on peut par exemple permettre à ceux-ci d'accéder à une
copie unique, mais depuis des endroits et des noms différents.
41
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Hard link (lien physique)
• Les liens physiques ne concernent que les fichiers; vous ne pouvez pas
créer de lien vers un fichier sur une partition différente avec un
numéro d’inode différent
• Si la copie real est supprimée, le lien fonctionnera , car il accède aux
Système d’exploitation I
ln /scripts/firefox /scripts/on-fire
( Source ) ( Destination )
43
SMI_S3
Système d'exploitation UNIX
Le système de Fichiers
Symbolic link (lien symbolique)
• Un lien symbolique ne possède pas les limitations du lien physique.
Vous pouvez créer des liens vers des fichiers et des répertoires, et vous
pouvez créer des liens (raccourcis) sur différentes partitions et avec un
Système d’exploitation I
ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib32/libGL.so.1
(----------Source-------) ( Destination )
Système d’exploitation I
45
SMI_S3
Système d'exploitation UNIX
Commandes Unix
Unix offre à l’utilisateur un ensemble de commandes pour avoir
certaines informations ou pour manipuler des objets tels que
répertoires, fichiers, processus…etc
Syntaxe générale des commandes:
Système d’exploitation I
47
SMI_S3
Système d'exploitation UNIX
Commandes Unix
Quelques commandes utiles
• date: affiche la date et l’heure
• cal: affiche le calendrier
Système d’exploitation I
49
SMI_S3
Système d'exploitation UNIX
Expressions régulières simple
[a-dA-D] intervalle de a à d et A à D (a, b, c, d, A, B, C, D) par
exemple z[a-dA-D]y
donne zay, zby, zcy, zdy, zAy, zBy, zCy, zDy
Système d’exploitation I
• L'une des premières étapes dans l'installation d'un système est donc de
créer un compte utilisateur normal.
• Un utilisateur doit obligatoirement être un membre d’un groupe
d’utilisateurs, c’est son groupe principal qui est utilisé lors de la
création des fichiers. Par contre il peut appartenir à plusieurs groupes :
ses groupes secondaires déterminent ses droits d’accès aux fichiers
crées par d’autres utilisateurs.
• /etc/passwd : contient les informations relatives aux utilisateurs (login,
Anouar DARIF
username:passwd:UID:GID:full_name:directory:shell
username: Le nom de l’utilisateur (login)
passwd: Le mot de passe encodé
UID: Identificateur de l’utilisateur: user ID
GID: Identificateur du groupe: group ID
full_name: Le nom complet de l’utilisateur (Prénom Nom) - Ce
champ est appelé le champ GECOS (General Electric Compréhensive
Operating System) et peut éventuellement contenir d’autres
informations
Anouar DARIF
GID
login UID
Anouar DARIF
passwd Rep-perso
Commentaire
54
SMI_S3
Système d'exploitation UNIX
Gestion des comptes
Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/shadow
username:passwd:last:may:must:warn:expire:disable:reserved
Système d’exploitation I
fermeture du compte.
disable: Date de la fermeture du compte (en nombre de jours depuis
le 1er janvier 1970).
reserved: Champ réservé 55
SMI_S3
Système d'exploitation UNIX
Gestion des comptes
Gestion des utilisateurs
• Ajouter un Utilisateur
Format du fichier /etc/shadow
Système d’exploitation I
1 2 3 4 5 6 7
1 , 2 : login et password
3 : Le nombre de jours (depuis le 1er Janvier 1970) jusqu’à le dernier
changement du mot de passe
4 : Le nombre de jours avant que le mot de passe ne puisse être
changé
(un 0 indique qu'il peut être changé à n'importe quel moment).
5 : Le nombre de jours après lesquels le mot de passe doit être changé
Anouar DARIF
useradd.
usermod [option] login
Disons que l’on souhaite changer le shell de darif. Vous devrez faire
la chose suivante:
usermod -s /bin/tcsh darif
Autre exemple
Anouar DARIF
57
SMI_S3
Système d'exploitation UNIX
Gestion des comptes
Gestion des utilisateurs
• Supprimer un Utilisateur
Pour supprimer le compte d'un utilisateur il suffit de saisir "userdel"
suivie du nom de l'utilisateur. Cela supprimera l'utilisateur du fichier
Système d’exploitation I
"/etc/passwd" et "/etc/group".
userdel [options] login
login est le nom de l'utilisateur
L'option –r permet de demander à userdel d'effacer récursivement
le répertoire personnel de l'utilisateur, ce qu'elle ne fait pas par
défaut.
Pour forcer la suppression de l'utilisateur utiliser l'option -f, marche
même quand l'utilisateur est encore connecté.
Anouar DARIF
Exemple:
userdel -r -f toto
58
SMI_S3
Système d'exploitation UNIX
Gestion des comptes
Gestion des groupes
• Ajouter un groupe
La commande groupadd crée un nouveau compte groupe en utilisant
les valeurs spécifiées sur la ligne de commande et les valeurs par
défaut du système
Système d’exploitation I
/etc/group:
[root@client ~]# groupadd smi
[root@client ~]# cat /etc/group | grep smi
Anouar DARIF
smi:x:666:
• Supprimer un Groupe
Groupdel nom_groupe
Anouar DARIF
fichier1 et fichier2
• wc [nom-fichier ...] : afficher le nombre de caractères, mots et lignes
dans le(s) fichier(s)
-c affiche le nombre de caractères
-w affiche le nombre de mots
-l affiche le nombre de lignes
• sort [nom-fichier ...] : trier par ordre alphabétique les lignes du ou des
Anouar DARIF
fichiers en arguments.
• lpr nom-fichier : imprimer le fichier.
65
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
• cp fichier dest : copier un fichier
Si dest est un répertoire, cp copie le fichier dans dest.
Si dest est un fichier, cp créer une copie du fichier sous le nom
dest.
Système d’exploitation I
67
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
• mv fichier dest : renommer ou déplacer un fichier
• mv [option] fichiers répertoire: déplace les fichiers sources dans le
répertoire, en gardant les noms.
Système d’exploitation I
68
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
Editeur de fichiers : vi
• C’est un éditeur de texte plein écran
• Présent sur tous les systèmes Unix
Système d’exploitation I
69
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
Exercices
1. Dans votre répertoire courant , créez en une seule commande les
fichiers suivants : annee1 Annee2 annee4 annee45 annee41
annee510 annee_a
Système d’exploitation I
f. Commençant par a ou A
4. Créer un nouveau répertoire, et y copier les fichiers dont l’avant
dernier caractère est 4 ou 1.
70
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
Correction
1. touch annee1 Annee2 annee4 annee45 annee41 annee510
annee_a
2. mkdir Year
Système d’exploitation I
mv [aA]* Year
1. ;
a. ls *5
b. ls annee4*
c. ls annee4?
d. ls annee[^0-9]*
Anouar DARIF
e. ls *ana*
f. ls [aA]*
2. cp *[41]? nomrep. 71
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
Archiver et compresser
La compression d'un fichier se fait de manière suivante :
gzip fichier
Système d’exploitation I
Vous allez créer les fichiers fichieraa, fichierab, fichierac, ... qui
contiendront tous 10 lignes.
Le premier fichieraa contient les 10 premières lignes, ainsi de suite
Supposons qu’on a un fichier nommé ff1 de 15 lignes et qu’on va le
couper en fichiers de 5 lignes:
[root@client ~]# ls ff*
ff1
[root@client ~]# split -5 ff1 ff2
[root@client ~]# ls ff*
Anouar DARIF
ff1
ff2aa
ff2ab
ff2ac 74
SMI_S3
Système d'exploitation UNIX
Gestion des fichiers
cmp: Compare deux fichiers
La commande cmp indique si deux fichiers sont identiques.
cmp fichier1 fichier2
Si les deux sont identiques, la commande ne génère aucune sortie,
Système d’exploitation I
La commande uniq
uniq affiche les lignes uniques d'un fichier trié, ne conservant qu'un
seul exemplaire de celles dupliquées.
-u, unique : N'afficher que les lignes uniques.
-d, repeated : N'afficher que les lignes dupliquées.
Anouar DARIF
g, son groupe
o, tous les (others) autres.
• La présence d'un tiret "-" signifie l'absence complète de droits 76
SMI_S3
Système d'exploitation UNIX
Les Droit d’accès
Changements des droits
• Chown: Changer le propriétaire et le groupe d'un fichier ou dossier en
ligne de commande
chown [-option] [utilisateur][:groupe] [cible1 cible2 ..]
Système d’exploitation I
• Changer de propriétaire
Par défaut lorsqu'un utilisateur crée un fichier ou un dossier, il en
devient propriétaire et fait partie du groupe portant le même
nom.
Par exemple ce fichier appartient a l'utilisateur darif et fait partie
du groupe darif, pour voir les paramètres du fichier on va taper:
root@darif-virtualBox: /home/darif/smi # ls –l test.txt
-rw-r--r-- 1 darif darif 0 oct. 10 23:35 test.txt
Anouar DARIF
• Changer de groupe
Comme vous avez du le remarquez, le fichier appartient toujours
au groupe darif.
Anouar DARIF
79
SMI_S3
Système d'exploitation UNIX
Les Droit d’accès
Par exemple le répertoire smi contient un dossier et trois fichiers:
root@darif-virtualBox: /home/darif/smi # ls –l
-rw-r--r-- 1 darif darif 67 oct. 10 23:37 fich1.txt
-rw-r--r-- 1 darif darif 137 oct. 10 23:37 fich2.txt
Système d’exploitation I
80
SMI_S3
Système d'exploitation UNIX
Changer les permissions sur les fichiers
• La commande chmod (change mode, change le "mode" des fichiers)
peut s'écrire de plusieurs façons équivalentes, sur le modèle :
chmod [-R] <action-droits> nom_rep
L'option -R (récursif) permet de modifier les permissions de tous
Système d’exploitation I
Exemples
chmod u+x fichier : "ajoute le droit d'exécution au propriétaire du
fichier"
chmod go-rwx fichier : "enlève tous droits d'accès à tous les
utilisateurs, sauf au propriétaire"
chmod –R go-rwx /home/toto: enlève toutes les permissions
d'accès des fichiers du répertoire personnel de toto (et des sous-
répertoires.), à tous sauf au propriétaire, c'est-à-dire toto.
Anouar DARIF
83
SMI_S3
Système d'exploitation UNIX
Notations absolue et octale
• Exemples:
777 : tous les droits à tous
770 : tous les droits à user et group et aucun droit aux autres
Système d’exploitation I
84
SMI_S3
Système d'exploitation UNIX
Notations absolue et octale
• Exercice:
1.Interdire la lecture et l'accès au répertoire RepertoireUn aux
utilisateurs ne faisant pas partie du groupe staff
Système d’exploitation I
85
SMI_S3
Système d'exploitation UNIX
Notations absolue et octale
• Correction:
Mode symbolique
Système d’exploitation I
86
SMI_S3
Système d'exploitation UNIX
Le masque de protection umask
• La commande umask permet de définir les droits par défaut d'un
fichier ou répertoire à sa création. Elle indique les droits qu'il faut
retirer lors de leur création.
• umask affiche le masque de l'utilisateur actif
Système d’exploitation I
90
SMI_S3
Système d'exploitation UNIX
Les droits étendus
Le droit SUID
Il s'agit d'un dispositif de sécurité essentiel qui autorise un
utilisateur quelconque (par rapport à la commande) à bénéficier de
droits plus étendus que les siens (souvent ceux de root).
Système d’exploitation I
Cet Exemple nous indique que cet exécutable à le SUID activé qui
autorise un utilisateur d’écrire son mot de passe dans un fichier
91
réservé à root (/etc/shadow).
SMI_S3
Système d'exploitation UNIX
Les droits étendus
Le droit SUID
Opérations SUID
• Créer un dossier et tenter de changer son propriétaire. La
commande chown ne peut être utilisée que par root.
Système d’exploitation I
$ mkdir tmp
$ ls -ld tmp
drwxrwxr-x. 2 darif darif 6 4 jun 23:10 tmp
$ chown root tmp
chown: modification du propriétaire de «tmp»: Opération non permise
$ ls -l $(which chown)
-rwxr-xr-x. 1 root root 62792 10 jun 2019 /usr/bin/chown
$ ls -l $(which chown)
-rwsr-xr-x. 1 root root 62792 10 jun 2019 /usr/bin/chown
92
SMI_S3
Système d'exploitation UNIX
Les droits étendus
Le droit SUID
Opérations SUID
$ chown root tmp
$ ls -ld tmp
drwxrwxr-x. 2 root darif 6 4 jun 23:10 tmp
Système d’exploitation I
Désactivation du SUID
$ sudo chmod u-s $(which chown)
$ ls -l
Anouar DARIF
94
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
• Lorsqu’un programme est lancé depuis la ligne de commande du
shell, il reçoit les mêmes entrées-sorties que le shell. Celles-ci sont en
principe liées au clavier et à l’écran du terminal comme l’illustre la
figure.
Système d’exploitation I
Anouar DARIF
95
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
• Avant de lancer un processus, le shell lui associe 3 flux de données ( ou
fichiers):
• Entrée standard (par défaut clavier); descripteur 0
• Sortie Standard (par défaut écran); descripteur 1
• Sortie Standard des erreurs (par défaut écran); descripteur 2
Système d’exploitation I
97
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
Exemples:
• ls -l > smi : Le résultat de ls -l ne s'affiche pas à l'écran, mais il est placé
dans le fichier smi. On peut alors taper: less smi (ou more smi) pour
lire le fichier page par page.
Système d’exploitation I
99
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
• Utiliser un fichier comme entrée standard:
ma-commande < mon-fichier
• Envoyer à la commande toutes les lignes tapées en entrée, jusqu'à la
Système d’exploitation I
chaîne chaînedefin
ma-commande << chaînedefin
• Redirection des erreurs ( sous sh ou bash):
ma-commande 2> mon-fichier-erreur
• Redirection de la sortie standard et la sortie des erreurs vers un
fichier :
ma-commande > mon-fichier 2>&1
Anouar DARIF
100
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
Redirection de la sortie d’erreur
• Lorsqu’une erreur survient, l’usage veut que le programme informe
l’utilisateur en écrivant un message dans la sortie d’erreur standard.
En principe, les caractères envoyés vers cette sortie sont envoyés vers
Système d’exploitation I
101
SMI_S3
Système d'exploitation UNIX
Redirections des entrées-sorties
Les tubes de communications (pipe)
• ls -l > smi : Le résultat de ls -l ne s'affiche pas à l'écran, mais il est placé
dans le fichier smi. On peut alors taper: less smi (ou more smi) pour
lire le fichier page par page.
Système d’exploitation I
103
SMI_S3
Système d'exploitation UNIX
Commandes UNIX
La Commande find
• find cherche dans un répertoire ou hiérarchie de répertoires des
fichiers possédant certains critères
find [option] path expression commande
Système d’exploitation I
• option:
-name : recherche par nom de fichier
-type : Recherche par type de fichier
-user : recherche par nom d’utilisateur
-group : Recherche par appartenance à un groupe
-atime : Recherche par date de dernier accès
-mtime : Recherche par date de dernière modification
-ctime : Recherche par date de création
-size: recherche par la taille
Anouar DARIF
Pour connaître les derniers fichiers modifiés dans les 3 derniers jours
dans toute l'arborescence (/):
find / -mtime 3 –print
Anouar DARIF
l'option -exec. find couplé avec exec permet d'exécuter une commande
sur les fichiers trouvés d'après les critères de recherche fixés. Cette
option attend comme argument une commande, celle ci doit être suivi
de {}\
• commande:
-print affiche le nom du fichier
-exec unix-cmd (avec {}=nom du fichier
Exemples: recherche des fichiers ayant pour nom core, suivi de
l'effacement de ces fichiers.
Anouar DARIF
2. Chercher dans /usr les fichiers dont la taille dépasse 2000 bytes et
dont les droits sont fixés à 755 (-rwxr-xr-x).
107
SMI_S3
Système d'exploitation UNIX
Commandes UNIX
108
SMI_S3
Système d'exploitation UNIX
Les filtres
Un filtre est une commande qui lit les données sur l'entrée standard,
effectue des traitements sur les lignes reçues et écrit le résultat sur la
sortie standard.
Bien sûr les entrées/sorties peuvent être redirigées, et enchainées avec
Système d’exploitation I
des tubes.
A noter que le caractère d'indirection < en entrée n'est pas obligatoire
pour les filtres. les principaux filtres utilisés dans le monde UNIX:
• grep
• cat, more et less
• cut
• wc
• tr
• sed
Anouar DARIF
• Awk
• …
109
SMI_S3
Système d'exploitation UNIX
Les filtres
La Commande grep
• grep [abc] "essai?.txt" : afficher les lignes des fichiers essai?.txt qui
contiennent a, b ou c
• grep -n montexte monfichier: Retourne toutes les lignes ainsi que leur
numéro où montexte apparaît dans monfichier 112
SMI_S3
Système d'exploitation UNIX
Les filtres
La Commande grep: Exercice
1. Créer un fichier fruits qui contient les fruits suivants un par ligne :
tomate, poire, pomme, cerise, Fraise, fraise, kiwi, POMME3, afraise,
fraiseb
2. Chercher les lignes avec les critères suivants :
Système d’exploitation I
115
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande more
Cette commande est le prédécesseur de la commande "less". Elle
permet de naviguer dans un document mais possède peu de
fonctionnalités contrairement à "less".
Système d’exploitation I
Exemples:
• less -M readme.txt
Afficher "readme.txt" avec les informations de position
• less -Emr~ monFichier
Affiche monFichier page par page avec un prompt long (affichage
du pourcentage du fichier parcouru) en affichant les caractères
spéciaux sans combler les lignes vides par des ~
• file * | less
Anouar DARIF
118
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande cut
La commande cut présente 2 formes suivant que l'on sélectionne
des colonnes de caractères ou qu'on distingue des champs séparés
par un caractère précis.
Système d’exploitation I
• Exemples
affiche le 5ième caractère
cut -c5 fichier
119
SMI_S3
Système d'exploitation UNIX
Les filtres
cut : sélection de colonnes
affiche du 5ième au 10ème caractères
cut -c5-10 fichier
affiche le 5ième et le 10ème caractères
Système d’exploitation I
120
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande wc
La commande wc compte le nombre de lignes, de mots et de
caractères
wc [options] <fichier>
Système d’exploitation I
Options:
• -l : affiche le nombre de lignes
• -c : affiche le nombre de bytes
• -m : affiche le nombre de caractères
• -L : indique la longueur de la plus longue ligne
• -w : affiche le nombre de mots
•…
Exemples:
• Nombre de lignes, mots et caractères du fichier depts2012
Anouar DARIF
121
SMI_S3
Système d'exploitation UNIX
Les filtres
wc : sélection de colonnes
Système d’exploitation I
122
SMI_S3
Système d'exploitation UNIX
Les filtres
tr : Translate
tr, est un filtre ne reconnaissant pas les expressions régulières.
Cette commande est le plus souvent associée à des redirections
Les caractères entrés sont traités et le résultat est envoyé sur la sortie
standard
Système d’exploitation I
125
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande paste
Système d’exploitation I
126
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande sed
sed (streameditor) est un éditeur non interactif.
Cette commande permet d'appliquer un certain nombre de
commandes sur un fichier puis d'en afficher le résultat (sans
modification du fichier de départ) sur la sortie standard.
Système d’exploitation I
• Options:
Sans précision, la commande ne s'applique qu'à la 1ère
occurrence de chaque ligne.
0...9 : indique que la substitution ne s'applique qu'à la nième
occurrence
g : effectue les modifications sur toutes les occurrences trouvées.
• Exemples:
sed -e "s/[Ff]raise/FRAISE/g" fichier : substitue toutes les chaînes
Fraise ou fraise par FRAISE
Anouar DARIF
• Exemples:
• sed "10,20d" fichier : Cette commande va supprimer les lignes 10 à
20 du fichier
• sed "10d;20d" fichier : Cette commande va supprimer les lignes 10
et 20 du fichier
• sed "/smi/d" fichier : supprime les lignes contenant la chaîne smi
• sed "/smi/!d" fichier : supprime toutes les lignes ne contenant pas
la chaîne smi
• sed /^$/d fichier : détruire toutes les lignes vides d'un fichier
Anouar DARIF
smi1
smi2
smi3
smi4 131
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande sed
Les fonctions : q, r et w
• w (write) : écrit la ligne sélectionnée dans un fichier.
• sed "/ˆsmi/w resultat" fichier : Ecrire dans le fichier résultat toutes
Système d’exploitation I
smi4
132
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande sed
Les fonctions : p, l et =
• p (print) : affiche la ligne sélectionnée sur la sortie standard.(Elle
invalide l’option –n)
Système d’exploitation I
134
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande sed
Les fonctions a et i
• La fonction a (append) va placer un texte après la ligne sélectionnée.
La syntaxe est la suivante: a\ le texte
• La fonction i (insert) va placer un texte avant la ligne sélectionnée.
Système d’exploitation I
136
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande sed
Les fonctions a et i
• Exemple 2
Système d’exploitation I
Anouar DARIF
137
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Cette commande permet d'appliquer un certain nombre d'actions sur un
fichier. La syntaxe est inspirée du C
À la différence de sed, awk offre plus de possibilités et possède un
langage de programmation avec des structures conditionnelles, des
Système d’exploitation I
principe de fonctionnement
• Le programme awk est une suite d'action de la forme : motif { action },
le motif permet de déterminer sur quels enregistrements est appliquée
138
l'action.
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
• Un enregistrement est une chaine de caractères séparée par un
retour chariot, en général une ligne.
• Un champ est une chaine de caractères séparée par un espace (ou
par le caractère spécifié par l'option -F), en générale un mot.
Système d’exploitation I
141
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Exemples:
•Numérote les lignes du fichier: awk '{ print NR " : " $0 }' fichier
•Imprime de la ligne 3 à la ligne 5 , chaque ligne précédée par son
numéro: awk 'NR == 3 , NR == 5 {print NR" : " $0 }' fichier
Système d’exploitation I
Anouar DARIF
144
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Programme awk: Exemple 2
Système d’exploitation I
Anouar DARIF
145
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Programme awk
• Constantes :
Chaines de caractères ( "chaine")
Système d’exploitation I
146
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
• Opérateurs :
• Affectation = += -= *= /= %= ^=
• Arithmétiques + - * / % ^
• Incrément, décrément ++ --
Système d’exploitation I
• Logiques && || !
• Comparaison < > <= >= == !=
• Conditionnelle ? : (c?e1:e2)
• ϵ à un tableau in (i in T = 1 si T[i] existe, 0 sinon)
• Correspondance ~ !~ ( $1 ~ /ER/)
• Structures de contrôle:
La plupart des structures de contrôle ont la même syntaxe et
la même sémantique que celles du langage C
if(expression) instructions [else instructions]
Anouar DARIF
s'affiche à la place.
Anouar DARIF
149
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
• Structures de contrôle
Exercice : Ecrire script awk qui teste si les utilisateurs ont un mot de
passe ou non.
Système d’exploitation I
Anouar DARIF
150
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
• Tableaux:
Aucune déclaration n’est nécessaire, et pas besoin de préciser la taille.
Le tableau est vu comme une suite de ( indice, valeur).
Système d’exploitation I
151
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
• Tableaux:
Exemples (suite):
Système d’exploitation I
Anouar DARIF
152
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Fonctions : on peut utiliser les fonctions prédéfinis ou définir nos
propres fonctions.
Exemples de fonctions prédéfinies:
Système d’exploitation I
instructions
return valeur
154
}
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Fonctions: exemple
Système d’exploitation I
Anouar DARIF
155
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Syntaxe des sélections
• Une expression régulière:
vérifiée sur toute la ligne : /expression/
Système d’exploitation I
156
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Actions
• Les actions permettent de transformer ou de manipuler les
données, elles contiennent une ou plusieurs instructions.
Système d’exploitation I
157
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Exemples
• awk -F: '{ print $1, $3 }' /etc/passwd
• awk -F: '{ print $1, $NF }' /etc/passwd
Système d’exploitation I
158
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
Exercice
Considérons le fichier Etudiants dont chaque ligne contient les
données sous le format suivant:
Système d’exploitation I
159
SMI_S3
Système d'exploitation UNIX
Les filtres
La commande awk
correction
1. awk '{print $1}' Etudiants
2. awk 'NF < 3 {print NR}' Etudiants
Système d’exploitation I
visualisation
• ps [option] : permet d'obtenir la liste des processus qui tournent au
moment où vous lancez la commande
darif@darif-VirtualBox: ~$ ps
PID TTY TIME CMD
1997 pts/0 00:00:01 bash
PID : c'est le numéro d'identification du processus. Chaque
processus a un numéro unique qui permet de l'identifier.
TTY : c'est le nom de la console depuis laquelle a été lancé le
Anouar DARIF
processus.
TIME : la durée d'exécution du processus.
CMD : le programme qui a généré ce processus 161
SMI_S3
Système d'exploitation UNIX
Processus
Manipulation
• Options
Sans option : affiche les processus de la session active
-e : affiche tous les processus
Système d’exploitation I
163
SMI_S3
Système d'exploitation UNIX
Processus
Manipulation
•Les signaux les plus courants sont :
HUP signal 1 : signal de fin d'exécution où le processus doit relire
son fichier de configuration.
Système d’exploitation I
opérations!
fdisk sans aucun argument utilisera le premier disque dur qu'il trouve.
Si jamais vous voulez préciser à fdisk le disque à partitionner, il faut lui
passer le nom du périphérique comme argument. Dans l'exemple
suivant on indique explicitement à fdisk que l'on désire partitionner le
second disque dur : fdisk /dev/hdb
Noms des disques durs
• Sous Linux, le nom des périphériques de stockage varie selon qu'il
s'agit de disques SCSI ou IDE.
Anouar DARIF
Pour des disques IDE, le premier sera nommé hda, le second hdb, ...
Pour des disques SCSI, le premier s'appellera sda, le second sdb, ...
168
SMI_S3
Système d'exploitation UNIX
Espace Disque
Les options les plus fréquentes :
d destruction d'une partition
l liste des types de partitions
m Impression du menu en cours
Système d’exploitation I
Exemples d'utilisation
Anouar DARIF
170
SMI_S3
Système d'exploitation UNIX
Le shell
Les variables d'environnement système
Connaitre le shell utilisé : ps ou echo $SHELL
Connaitre la version du shell pour bash par exemple :
bash --version
Système d’exploitation I
171
SMI_S3
Système d'exploitation UNIX
Le shell
Configuration de l’environnement du shell
Modification des variables
• Directement en ligne de commandes en utilisant la commande
export ou en utilisant une affectation directe:
Système d’exploitation I
173
Anouar DARIF Système d’exploitation I SMI_S3
Programmation Shell
174
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Un script shell est un fichier de type texte contenant une suite de
commandes shell, exécutable par l'interpréteur, comme une
commande unique.
Un script peut être lancé en ligne de commande, comme dans un autre
Système d’exploitation I
script.
On peut définir des variables et utiliser des structures de contrôle
comme dans un langage de programmation .
Tout script bash commence-t-il par la ligne suivante : #!/bin/bash
Le langage bash gère notamment :
• la gestion des entrées-sorties et de leur redirection
• des variables définies par le programmeur et des variables
systèmes
Anouar DARIF
• le passage de paramètres
• des structures conditionnelles et itératives
• des fonctions interne 175
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Créer et lancer un script
Créer un fichier avec un éditeur de texte en y mettant les commandes
souhaitées
Rendre le programme exécutable
Système d’exploitation I
Lancer le Script
• bash nom-script
• ./nom-script
• nom-script
Le répertoire dans lequel se trouve le fichier shell doit être présent
dans la liste des chemins contenue dans PATH;
Ou le placer dans un répertoire se trouvant dans PATH.
Un script peut être une simple liste de commandes
Anouar DARIF
176
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Un premier script
La première ligne du script doit préciser l'interpréteur utilisé, elle
commence par les deux caractères #!, suivis du chemin de
l'interpréteur.
Système d’exploitation I
177
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Créer et lancer un script
vi e1.sh
#!/bin/bash
echo " ---Bonjour $USER ----- "
Système d’exploitation I
Exemples:
echo "Donnez votre prénom et votre nom "
read prenom nom
echo "Bonjour $prenom $nom
echo $question
read reponse
echo $reponse 180
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Paramètres
Un paramètre désigne une entité pouvant contenir une valeur.
3 Classes de paramètres :
• Variables : identifiés par un nom
Système d’exploitation I
La commande read (Ex: read var, read -p "entrer var:" var) sans
paramètre, ce qui est lu est mis dans la variable REPLY
181
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Paramètres
• Accès à la valeur $var
Ex: echo $var
• Protection de variable : readonly
• On peut utiliser declare pour déclarer une variable.
Système d’exploitation I
Exemple 1: Exemple 3:
#!/bin/bash #!/bin/bash
x=bonjour var1=SMI1
y=ali var2=SMI2
echo "y est $y" echo "$var1 $var2"
echo "$x $y« readonly var1 var2
Y est ali var1=SMI3
Bonjour ali var2=SMI4
Exemple 2:
Anouar DARIF
i : entier
a : tableau (array)
f : fonction(s)
x : var=$valeur
Exemples
declare -i x=35*2
echo $x
70
Anouar DARIF
set $a $b $c
echo $1, $2, $3
les valeurs de a, b, c sont récupérées dans $1, $2, $3
184
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Paramètres
Paramètres de position
• La commande interne shift décale la numérotation des paramètres
de position ayant une valeur.
• Syntaxe : shift [ n]
Système d’exploitation I
Exemple 1: Exemple 2:
MSG1="Jean est un" MSG1="Jean est un "
MSG2="chien fort réputé" MSG2="chien fort réputé"
echo "$MSG1 $METIER $MSG2« METIER="dresseur de"
Anouar DARIF
Exemple :
echo pwd
pwd
echo $(pwd)
/home/darif
Il est possible d'assigner le résultat d'une ligne de commande UNIX à
une variable
REPERTOIRE=`pwd`
MACHINE=`hostname`
Anouar DARIF
189
SMI_S3
Système d'exploitation UNIX
Programmation Shell
La commande test
• -z: la chaine est vide
• -n: la chaine n’est pas vide
Système d’exploitation I
190
SMI_S3
Système d'exploitation UNIX
Programmation Shell
La commande test
Exemples :
• test –f /etc/passwd ou [ -f /etc/passwd] passwd est un fichier?
• [ -w fichier ] le fichier est-il modifiable ?
Système d’exploitation I
convoqué(e) à l'oral"
191
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Neutralisation des caractères
Certains caractères ont des significations particulières pour
l'interpréteur de commandes Par exemple: &, (, ), *, !, {, },...
Sans un mécanisme d'échappement, ces caractères spéciaux seront
interprétés par Bash.
Système d’exploitation I
• echo $((30+2*10/4))
• echo $(( (30+2) * (10-7) /4 ))
Déclaration variable entière: declare -i b (facultatif)
Exemple:
declare -i k ; k=1 ; p=1
while [ $k -le 10 ]
do
p=$p * $k
Anouar DARIF
k=$k+1
done
echo "factoriel de $(($k-1)) est $p " 193
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Commande eval
Cette commande ordonne l'interprétation par le shell de la chaine
passée en argument. On peut ainsi construire une chaine que l'appel à
Système d’exploitation I
194
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structures conditionnelles
Syntaxes possibles
if suite-de-commandes
if suite-de-commandes
then
Système d’exploitation I
then
bloc-instruction
bloc-instruction1
fi
Else
If suite-de-commandes1 bloc-instruction2
then fi
bloc-instruction1
elif suite-de-commandes2 Le code de retour de la commande
then détermine le test if :
bloc-instruction2 • Code de retour valant zéro: Le
Anouar DARIF
196
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Branchement conditionnel : case-esac
Syntaxe
case mot in
cas1) cmd1;;
Système d’exploitation I
cas2) cmd2;;
...
casn) cmdn;;
esac
de C.
• casi à reconnaitre peut s'exprimer sous forme d'expression
rationnelle(ou régulière) utilisant les méta-caractères: * ? [ ] -
197
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Branchement conditionnel : case-esac
Exemples
Système d’exploitation I
read USER
case $USER in
root) echo "Mes respects M le $USER" ;;
Anouar DARIF
liste-commandes
done
La variable prend successivement les valeurs de la liste de
mots, et pour chaque valeur, liste-commandes est exécutée
Exemples:
Anouar DARIF
199
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle for-do-done
Exemples:
#!/bin/bash #!/bin/bash
Système d’exploitation I
#!/bin/bash #!/bin/bash
for (( x=0 ; x<5 ; x++ )) for V in $(seq 0 $2)
do do
echo $(( x*2 )) echo $V" x "$1" = "$(expr $V "*“ $1 )
Anouar DARIF
done done
200
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle for-do-done
Exemple
Système d’exploitation I
Anouar DARIF
201
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle while-do-done
Syntaxe while liste-commandes-1
do
liste-commandes-2
Système d’exploitation I
done
La valeur testée par la commande while est l'état de sortie de la
dernière commande de liste-commandes-1
Si l'état de sortie est 0, alors le Shell exécute liste-commandes-2
puis recommence la boucle
Exemple:
Anouar DARIF
202
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle while-do-done
Exemple:
Système d’exploitation I
Anouar DARIF
203
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle until-do-done
Syntaxe until liste-commandes-1
do
liste-commandes-2
Système d’exploitation I
done
204
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Structure itérative: Boucle until-do-done
Exemple:
Système d’exploitation I
Anouar DARIF
205
SMI_S3
Système d'exploitation UNIX
Programmation Shell
L'instruction select-do-done
Syntaxe
select variable in liste-de-mots
Système d’exploitation I
do
liste-commandes
don
206
SMI_S3
Système d'exploitation UNIX
Programmation Shell
L'instruction select-do-done: exemples
Système d’exploitation I
Anouar DARIF
207
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Tableaux
Déclaration:
declare -a nomtab
Système d’exploitation I
209
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Fonctions Bourne Shell
Nous pouvons rendre la programmation plus structurée en
utilisant des fonctions. La syntaxe est:
NomDeFonction ( ){
Système d’exploitation I
Commandes
}
Définition des fonctions Bourne shell: au début du fichier de
commande
Prend préséance sur les commandes systèmes de même nom
Peut avoir une valeur de retour: exit n où n est une valeur
numérique (=0: OK,≠0(et<256): Erreur)
Exemple:
Anouar DARIF
210
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Fonctions Bourne Shell : Exemple
Système d’exploitation I
Anouar DARIF
211
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Fonctions Bourne Shell : Exemple
Système d’exploitation I
Anouar DARIF
212
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Différence entre "$@" et "$*"
Lorsqu’on utilise entre guillemet, la variable $@ et la variable $*
n'ont pas la même signification
Pour "$@" l'interpréteur de commandes substitue les paramètres
Système d’exploitation I
Exemple
Anouar DARIF
213
SMI_S3
Système d'exploitation UNIX
Programmation Shell
Différence entre "$@" et "$*"
Système d’exploitation I
214