Vous êtes sur la page 1sur 137

Programmation des systèmes numériques

Systèmes d'exploitation

2022/2023
Systèmes d'exploitation
Introduction
Concepts fondamentaux
▪ Ordinateur : Machine permettant de stocker des informations et d’effectuer
des calculs (beaucoup plus rapide que l’humain)
▪ Cet ordinateur regroupe un certain nombre de composants que nous
appellerons matériel (hardware)
▪ Les logiciels sont des séquences d’instructions que l’on appelle souvent
programmes.
▪ Un programme est l’implantation d’un ensemble de méthodes de résolution
de problèmes dans un langage compris par l’ordinateur
▪ La méthode de résolution est ce que l’on appelle l’algorithme
▪ Informatique désigne l'automatisation du traitement de l'information
Qu’est ce que le système d’exploitation?
▪ Un système d’exploitation(SE), en anglais Operating System(OS), est un programme
ou un ensemble de programmes qui permet la communication entre

• les différentes composantes matérielles d’une machine informatique (ordinateur,


tablette, smartphone…)

• et les logiciels applicatifs (traitement de texte, jeu vidéos, etc.).

▪ Un SE prend en charge la gestion et le partage des ressources de la machine soit des


ressources physiques tel que les ressources de stockage (disque durs, RAM, ..) ou les
ressources de calcul (processeur,...), soit des ressources logiques ou virtuelles tel que
les fichiers ainsi que les canaux de communication logiques.
Qu’est ce que le système d’exploitation?
▪ De plus, il assure le démarrage de l'ordinateur, et fournit aux programmes applicatifs
des interfaces standardisées pour les périphériques.

▪ Un SE est un programme système fondamental qui contrôle d’une manière efficace


toutes les ressources d’une machine et représente une base sur laquelle les
programmes d’application sont écrits.

▪ Un SE permet de cacher la complexité de la machine pour l’utilisateur pour lui


faciliter son utilisation sans savoir ce qui est derrière.

▪ Un SE représente donc une abstraction du système.


Qu’est ce que le système d’exploitation?
▪ Système d’exploitation : Programme assurant la gestion d’une machine
informatique et de ses périphériques

▪ A quoi ca sert?
▪ à simplifier la vie des utilisateurs et des programmeurs
▪ à cacher la complexité des machines pour l'utilisateur afin d'utiliser la machine
sans savoir ce qui est derrière
▪ à gérer les ressources de la machine d'une manière efficace

▪ Abstraction du terme “Machine” selon Coy:


▪ {Machine réelle} = Unité centrale + périphériques
▪ {Machine abstraite} = {machine réelle} + {Système d’Exploitation}
▪ {Machine utilisable} = {machine abstraite} + applications
Rôle d’un système d’exploitation
Un SE joue le rôle de l'intermédiaire entre les applications et les
ressources de la machine (tel que le processeur, la RAM , souris, clavier,
microphone, etc.).
→ jouer le rôle de chef d’orchestre et contrôler l’accès aux ressources

Présentation : Il propose à l'utilisateur


une abstraction plus simple et plus
agréable

Gestion : il ordonne et contrôle


l'allocation des ressources de la machine
Fonctionnalités d’un système d’exploitation
En tant que gestionnaire de ressources, le SE doit permettre de :
▪ Contrôler l'accès aux ressources et le respect des délais.

▪ Gérer le transfert des programmes dans et hors de la mémoire.

▪ Organiser l'utilisation de la mémoire entre les programmes.

▪ Organiser le temps de traitement entre les programmes et les utilisateurs.

▪ Maintenir la sécurité et les droits d'accès des utilisateurs.

▪ Gérer les erreurs et les instructions de fonctionnement.


Exemples de Systèmes d’Exploitation
Il existe plusieurs types de systèmes d’exploitation :
▪ Systèmes d’exploitation pour ordinateurs personnels comme Windows, Linux,
MacOSX…
▪ Systèmes mainframes (grands systèmes) comme Multics, IBM MVS, BS2000…
▪ Systèmes d’exploitation mobile qui sont utilisés avec des appareils mobile comme les
smartphones et les tablettes. Il existe plusieurs variants comme Android, iOS,
Backberry OS, Windows Phone, Bada.
▪ Systèmes pour TV comme Android TV, Tizen, tvOS, Firefox OS…
Et bien d’autres…
Chaque SE a son ergonomie et sa propre présentation qui ont un impact sur l’utilisation.
Historique des Systèmes d’Exploitation :
Dans l’histoire, on distingue quatre générations d’ordinateurs:

▪ Première génération (1938 - 1955) : les tubes à vide et les tableaux d’interrupteurs
sont utilisés pour effectuer certaines opérations simples de calcul.

Les machines informatique étaient énormes, remplissant des pièces entières et la


même équipe s’occupait à la fois de la construction, la programmation,
l’administration et la maintenance des machines.

Tous les programmes ont été écrits en langage machine (langage binaire), pas de
langage abstrait (C,C++,Java, etc.). L’exécution des applications a été conçue en
basculant les tableaux d’interrupteurs afin de contrôler les fonctions de base de la
machine.

Dans la première génération, il n’y a pas de système d’exploitation.


Historique des Systèmes d’Exploitation :
Dans l’histoire, on distingue quatre générations d’ordinateurs:
▪ Deuxième génération (1955 - 1965) : les machines ont été construites au moyen de
transistors et dotées d’unités de bandes magnétiques.
Il y a eu une séparation entre concepteurs, constructeurs, programmeurs, opérateurs et
personnels de maintenance.
Les programmes ont étés écrits en FORTRAN puis codés sur des cartes perforées.
C’est un opérateur humain qui se préoccupe du traitement des travaux (jobs) d’une
manière séquentielle ainsi que de la gestion de la soumission des entrées (lecture des
cartes perforées) et sorties (sur imprimante).
Les opérations possibles ont été les calculs scientifiques et d’ingénierie ainsi que les
résolutions d’équations aux dérivées partielles.
Durant cette génération, les premiers systèmes d’exploitation sont apparus, notamment :
FMS: Fortran Monitor System et IBYS (IBM)
Historique des Systèmes d’Exploitation :
Dans l’histoire, on distingue quatre générations d’ordinateurs:

▪ Troisième génération (1965 - 1980) : des circuits intégrés sont utilisés pour la
production des ordinateurs. Une seule gamme de produits est apparue (IBM). IBM
1401 est une machine pour E/S (les opérations d’Entrées / Sorties). IBM 7094 est
une machine pour le calcul. Puis IBM a proposé d’autres machines.

De plus, on note l’apparition de la notion de Multiprogramme qui correspond à


l’exécution de plusieurs programmes en parallèle sur la même machine, la possibilité
de communiquer les données entre programmes et de partager la mémoire, ainsi que
l’utilisation des mécanismes de protection.

Enfin, le SE a pris en charge la gestion des E/S.

Exemples des Systèmes d’exploitation: MULTICS, DEC PDP, UNIX


Historique des Systèmes d’Exploitation :
Dans l’histoire, on distingue quatre générations d’ordinateurs:

▪ Quatrième génération (1980 –Aujourd’hui) : les ordinateurs personnels sont apparus.


De plus, elles sont moins coûteuses. Durant cette génération, les systèmes
d’exploitation centralisés en réseaux notamment Windows, Linux sont apparus.

Ils offrent la possibilité de connecter deux machines distantes et d’assurer le transfert de


fichiers. Chaque machine possède son propre SE et peut être utilisée par plusieurs
utilisateurs, elle donc nommée machine multi-utilisateurs.

De plus, les SE répartis (distribués) sont apparus :


Système distribué sur un domaine ;
Une machine virtuelle à plusieurs processeurs ;
Les ressources sont localisées d’une manière transparente ;
Système fiable et tolérant aux pannes.

Exemples des Systèmes d’exploitation: MS-DOS, MAC OS X, Windows, UNIX, Linux


Historique des Systèmes d’Exploitation :
Dans l’histoire, on distingue quatre générations d’ordinateurs:
▪ Cinquième génération (Aujourd’hui – Futur):
Le challenge est de concevoir des ordinateurs basés sur l’intelligence artificielle.
En effet, l’objectif est essentiellement la réalisation et le développement de l’appareil qui
est capable de répondre correctement au langage naturel et qui a la capacité d’apprendre
et de s’organiser lui-même. De plus en plus, les systèmes deviendront autonomes.
De plus, on peut aller plus loin et avoir la possibilité d’utiliser du calcul quantique et des
technologies moléculaires et nano dans le futur.
Exemples de systèmes d'exploitation pour PC
Il existe plusieurs SE pour ordinateur.

Windows et Linux sont considérés comme les principaux


SE existants.

Ils sont en évolution continue avec le temps ce qui


implique l’existence des plusieurs versions aujourd’hui.
Exemples de systèmes d'exploitation pour PC
Microsoft Windows

C’est le système d'exploitation le plus courant, le plus utilisé et le plus répandu


des 3 sur les ordinateurs aujourd'hui. Il a été crée par Microsoft.
Microsoft Windows 11 est la version la plus récente de Windows.
Vous pouvez rencontrer d’anciennes versions : Windows 10, Windows 8,
Windows 7, Windows Vista ou encore Windows XP.

Ce système est vendu sur différentes marques d’ordinateurs


Exemples de systèmes d'exploitation pour PC

Linux

C’est un système d'exploitation gratuit et open source.


Il existe plusieurs variantes de Linux, notamment Ubuntu, Debian,
Red Hat et Slackware.
Linux est le moins connu des systèmes d’exploitation.
Il est rarement installé par défaut sur un ordinateur.
Il est utilisé surtout par ceux qui ont de bonnes connaissances en
informatique.
Fonctions d’un système d'exploitation
Un SE offre un ensemble de services ou fonctions afin de garantir le bon
fonctionnement de l’ordinateur:
1. La gestion des Processus
Déf.: Un processus est un programme lors de l'éxécution (aspect
dynamique d'un programme)
2. La gestion de la Mémoire
3. La gestion des Entrées/Sorties
4. La gestion des Fichiers
5. La gestion des Utilisateurs
→ Le tout est gérer par un chef d’orchestre appelé noyau ( kernel )
La gestion des Utilisateurs:
Il est possible de classer les SE en deux catégories :
▪ Les SE Mono utilisateur : ce sont les systèmes d'exploitation à
utilisateur unique qui permettent à un seul utilisateur d'accéder à un
moment donné à l’ordinateur.
Ces SE à utilisateur unique peuvent être repartis en deux classes :
1. Système d'exploitation mono-utilisateur mono-tâche : un seul
utilisateur est autorisé à effectuer une seule tâche à la fois. Exemple :
MS-DOS
2. Système d'exploitation multitâche mono-utilisateur : un seul
utilisateur est capable d'effectuer plusieurs tâches en même temps.
▪ Les SE multi-utilisateur : Ce Type de système d’exploitation supporte
plusieurs sessions en même temps.
En résumé

Utilisateurs

Programmes Interface utilisateur

Système d’exploitation

Pilotes (Drivers)

Ordinateur / Matériel
Systèmes d'exploitation
Linux
Linux
▪ Les origines
A l'origine Linux est un noyau UNIX créé en 1991 dans le cadre d'un
projet initialisé et coordonné par Linus TORVALDS.

Linux reprend les fonctionnalités d'Unix sans reprendre de code


propriétaire (Unix System V est la propriété de AT&T).

Le développement de Linux s'est fait avec "la même philisophie" que


le projet GNU

Par la suite Linux a désigné les distributions construites autour de ce


noyau.
Linux
▪ Une distribution Linux est un système d'exploitation créé à partir d'une collection de
logiciels utilisant le noyau Linux/GNU.
➢Dans la plupart des distributions, les logiciels disponibles sont libres.

▪ Quelques distributions :
GNU
Le projet GNU est un projet de la FSF (Free Software Foundation) dont le but est de
développer un système d'exploitation complet, distribué selon les conditions de la GPL.

La FSF a été fondée au début des années 80 par Richard M. Stallman, chercheur au
laboratoire d'Intelligence Artificielle du MIT.

Le but de cette fondation est de développer des logiciels libres.

La GPL (General Public License) est une license qui spécifie les conditions de
distribution de tous les logiciels GNU.
Logiciel Libre
Selon www.gnu.org, l'expression “Logiciel libre” fait référence à la liberté et non pas
au prix

✓ La liberté d'exécuter le programme, pour tous les usages (liberté 0).

✓ La liberté d'étudier le fonctionnement du programme, et de l'adapter à vos


besoins (liberté 1).
→Pour ceci l'accès au code source est une condition requise.

✓ La liberté de redistribuer des copies, donc d'aider votre voisin, (liberté 2).

✓ La liberté d'améliorer le programme et de publier vos améliorations, pour en


faire profiter toute la communauté (liberté 3).
→Pour ceci l'accès au code source est une condition requise.
Un programme est un logiciel libre si les utilisateurs ont toutes ces libertés.

Ainsi, chacun est libre de redistribuer des copies, avec ou sans modification,
gratuitement ou non.

La seule condition est que les sources de ces logiciels doivent être disponibles
gratuitement pour quiconque en fait la demande.

Linux a donc été développé selon les termes d'une licence GPL
Commandes
➢ Interpréteur de commandes
Le Shell est un programme qui permet l'exécution de commandes

Il y plusieurs une implantation libre avec code source disponible de ce Shell

Bash (Bourne Again Shell) qui est l’interpréteur de commandes (terminal) le plus
courant sous Linux et aussi sous MAC OS. Il est également possible de l’activer
sous Windows

Le terminal fonctionne avec le principe REPL : Read Eval Print Loop.


▪ Read: L’utilisateur tape une commande qui est lue par l’interpréteur,
▪ Eval: Cette commande est exécutée et retourne une chaîne de caractères,
▪ Print: La chaîne de caractères est affichée à l’écran,
▪ Loop: On recommence.
Commandes
➢Syntaxe des commandes :
commande [options] [arguments]

✓ commande : nom de la commande


✓ options : commencent habituellement par le caractère -
✓ arguments : spécifient les objets (fichiers ou variables)

➢ man : Manuel des commandes donne des infos détaillées (manuelles ) sur la
commande
▪ $ man nom_commande
Exemple : $ man man

On peut également avoir une aide rapide sur la plupart des commandes par l'option - -help
▪ $ man --help
Commandes
La commande ls est utilisée pour visualiser le contenu d’un répertoire.
Par défaut, cette commande affichera le contenu du répertoire (dossier) courant.

Pour voir le contenu d’autres répertoires, tapez ls suivi du chemin d’accès au répertoire.
Par exemple pour voir le contenu de Documents qui se trouve dans home

$ ls /home/elsa/documents
> boulot fiche.ods
Arborescences

Répertoire racine

Sous-répertoires Fichiers
Commandes
La commande ls prend en charge les options suivantes:
-a: liste tous les fichiers, y compris les fichiers cachés. Ce sont des fichiers qui commencent par «.».
-A: liste tous les fichiers, y compris les fichiers cachés, à l'exception de «.» et «..» ils se réfèrent aux entrées du
répertoire courant et du répertoire parent.
-R: liste tous les fichiers de manière récursive,
-l: liste les fichiers avec le numéro d'index, le nom du propriétaire et du groupe, la taille et les autorisations.
-o: liste les fichiers au format long mais sans le nom du groupe.
-g: liste les fichiers au format long mais sans le nom du propriétaire.
-i: liste les fichiers avec leur numéro d'index.
-s: liste les fichiers avec leur taille.
-t: trie la liste par heure de modification, avec la plus récente en haut.
-S: trie la liste par taille, avec la plus grande en haut.
-r: inverser l'ordre de tri.
$ ls -lit
> -r-x-r--r-- 1 john staff 128 mai 18 11:56 toto.sh
drwxrwx--- 1 vivati finances 128 oct 1 13:22 titi
Commandes
La commande pwd (print working directory) pour afficher le chemin du répertoire de
travail (dossier) dans lequel vous êtes actuellement.
La commande retournera un chemin absolu (complet à partir de la racine), qui est en
fait un chemin de tous les répertoires qui commence par une barre oblique (Slash ) /

Exemple :

$ pwd
> /home/elsa/documents
Commandes
La commande cd (Change Directory) est utilisée pour naviguer dans les répertoires.
Elle nécessite soit le chemin d’accès complet, soit le nom du répertoire, selon le
répertoire de travail dans lequel vous vous trouvez.

Par exemple Disons que vous êtes dans


/home/elsa/documents et que vous voulez aller
dans boulot, un sous-répertoire de documents.
Pour ce faire, tapez la commande suivante :
$ cd boulot

Mais pour allez a usb0 dans media tapez:


$ cd /media/usb0
Commandes
Il existe quelques raccourcis pour vous aider à naviguer rapidement :
▪ cd .. (avec deux points) pour se déplacer d’un répertoire parent (vers le haut)
▪ cd ou cd ~ pour aller directement au dossier principal (home)
▪ cd - (avec un tiret) pour passer à votre répertoire précédent

Par ailleurs, le shell de Linux est sensible à la casse.


Vous devez donc taper les noms des répertoires
exactement comme ils sont.
Commandes
La commande cp pour copier les fichiers du répertoire actuel dans un autre répertoire

La commande mv pour déplacer des fichiers, bien qu’elle puisse également être utilisée
pour renommer des fichiers.

Par exemple
pour copier scenery.jpg (de votre répertoire actuel) dans le répertoire photos:
$ cp scenery.jpg /home/elsa/photos

pour déplacer fichier.txt (de votre répertoire actuel) dans le répertoire documents:
$ mv fichier.txt /home/elsa/documents

pour renommer fichier.txt (de votre répertoire actuel) avec newFile.txt:


$ mv fichier.txt newFile.txt
Commandes
La commande touch pour créer un ou plusieurs nouveaux fichiers vierge

Par exemple
pour créer un fichier appelé fichier :
$ touch fichier

pour créer deux fichiers fichier1 et fichier2 en même temps:


$ touch fichier1 fichier2

l’option m pour changer sa date de modification à l’heure actuelle:


$ touch -m fichier
Commandes
La commande mkdir pour créer un ou plusieurs nouveaux répertoires

Par exemple
pour créer un répertoire appelé Music :
$ mkdir Music

pour créer deux répertoires Music et Vidéo en même temps:


$ mkdir Music Vidéo

l’option p pour créer les répertoires en même temps :


$ mkdir -p Music/2023/Nouveau
Commandes
La commande rmdir pour supprimer un ou plusieurs répertoires vides

Par exemple
pour supprimer un répertoire appelé Music :
$ rmdir Music

pour supprimer deux répertoires Music et Vidéo en même temps:


$ rmdir Music Vidéo
Commandes
La commande rm pour supprimer un ou plusieurs fichiers

Par exemple
pour supprimer un fichier appelé fichier :
$ rm fichier

pour supprimer deux fichiers fichier1 et fichier2 en même temps:


$ rm fichier1 fichier2

l’option r pour supprimer les répertoires même s’ils ne sont pas vide :
$ rm -r Music/2023
Commandes
La commande cat (concatenate) permet de créer, d’afficher et de concaténer des
fichiers. Il est principalement utilisé pour prévisualiser un fichier sans ouvrir un éditeur
de texte

La commande head pour visualiser les premières lignes de fichier. Par défaut, elle
affichera les 10 premières lignes, mais avec l’option -n on peut modifier ce nombre

La commande tail similaire à celle de la commande head, mais au lieu d’afficher les
premières lignes elle affiche les 10 dernières lignes d’un fichier

Par exemple
pour prévisualiser un fichier appelé fichier :
$ cat fichier
$ head fichier
$ tail –n 30 fichier
Commandes
La commande wc (word count) permet de compter le nombre de lignes, de mots, de
caractères et d’octets de chaque fichier donné
La commande wc prend en charge les options suivantes:
-l, –lines Imprimez le nombre de lignes
-w, –words Imprimez le nombre de mots
-m, –chars Imprimez le nombre de caractères
-c, –bytes Imprimez le nombre d’octets
-L Imprimez la longueur de la ligne la plus longue

Par exemple
pour copier scenery.jpg (de votre répertoire actuel) dans le répertoire photos:
$ wc -mL rose-tatoo.txt
$ wc rose-tatoo.txt Ubuntu.txt
Commandes
La commande grep permet de rechercher tout le texte d’un fichier donné
$ grep [option] motif [nom_fichier]
Exemple
$ grep son fic
[option]
-i – la recherche ne sera pas sensible à la casse
-c – il n’affichera que le nombre de lignes qui correspondent au modèle recherché
-r – permet la recherche récursive dans le répertoire courant
-n – rechercher les lignes et ne retenir que les numéros des lignes correspondant
-v – avec cette option, on nous montre les lignes qui ne correspondent pas au
modèle que nous avons cherché
$ grep ^[a-d] fichier1
obtenir tous les lignes commençant par les caractères compris entre a et d du fichier
fichier1.
Commandes
Les différentes expressions régulières sont :
^ début de ligne
. un caractère quelconque
$ fin de ligne
x* zéro ou plus d'occurrences du caractère x
x+ une ou plus occurrences du caractère x
x? une occurrence unique du caractère x
[...] plage de caractères permis
[^...] plage de caractères interdits
\ {n\} pour définir le nombre de répétition n du caractère placé devant

Exemple l'expression [a-z][a-z] * cherche les lignes contenant au minimum un caractère


en minuscule. [a-z] caractère permis, [a-z]* recherche d'occurrence des lettres permises.
L'expression ^[0-9]\ {4\}$ a pour signification, du début à la fin du fichier $, recherche
les nombres[0-9] de 4 chiffres \{4\}.
Commandes
La commande locate permet de localiser un fichier. De plus, l’utilisation de l’argument
-i avec cette commande la rendra insensible à la casse
La commande find permet également de rechercher des fichiers et des répertoires. La
différence de rechercher dans un répertoire donné.
$ find liste_de_répertoires expressionr

liste_de_répertoires est la liste des racines des arborescences à parcourir ;


expression est une suite d'options exprimant les critères de sélection
-name motif : vrai si le motif s'applique sur le nom du fichier courant ;
-user nomUtilisateur : vrai si le fichier courant appartient à l'utilisateur nomUtilisateur
-group recherche sur le groupe auquel appartient le fichier
-mtime n : vrai si le fichier a été modifié dans les n derniers jours
-ctime recherche par date de création du fichier
Commandes
La commande whoami (who am i) permet d’affiche le nom d’utilisateur actuellement
connecté

La commande who permet d'afficher des informations concernant des utilisateurs qui
sont connectés.

La commande which donne le chemin complet des commandes du shell. Si elle ne peut
pas reconnaître la commande donnée, elle lancera une erreur.

La commande whatis affiche une description d’une seule ligne de toute autre command

La commande history affiche la liste numérotée des commandes déjà utilisées


Commandes
➢ Redirection des entrées/sorties :
commande : nom_commande [options] [arguments] > fichier_sortie

Exemple :
$ ls -l > poub
$ date > poub

$ ls -l > poub
$ date >> poub

nom_commande [options] [arguments] < fichier_entrée

Exemple
$ wc < poub
Commandes
➢ Tube (<<pipe>>)
‘|’ permet de prendre la sortie standard d'une première commande et de la
rediriger sur l'entrée standard d'une 2ème commande.

La syntaxe :
nom_commande1 [options] [arguments] | nom_commande2 [options]
[arguments]

Exemple :
$ ls -l fic? | wc (raccourci de la série de redirections vu précédemment)
$ ls /etc | head (permet de se déplacer dans un texte écran par écran)
Caractères spéciaux
Caractère Description
Métacaractère qui remplace n'importe quelle chaîne de caractères (même vide).
*
Exemple : cp * DATA copie tous les fichiers dans le répertoire DATA.
? Métacaractère qui remplace un caractère quelconque.
Permet de séparer plusieurs commandes écrites sur une même ligne.
Exemple :
;
cp *.c DATA; tar cvf data.tar DATA copie tous les fichiers d'extention .c
dans le répertoire DATA et les archive dans le fichier data.tar.
Regroupe des commandes.
Exemple :
() (echo "Liste :"; ls ) > liste.txt
écrit la chaîne Liste : et la liste des fichiers du répertoire courant dans le fichier
liste.txt.
Permet le lancement d'un processus en arrière plan. Cela permet d'exécuter
& d'autres commandes pendant qu'un processus est en marche.
Exemple : vi&.
Le Système de fichiers

▪ Un système de fichiers est la façon d'organiser et de stocker une


arborescence sur un support (disque dur, disquette, cd-rom, ...).
▪ Chaque OS propriétaire a développé sa propre organisation.
▪ On peut faire cohabiter plusieurs systèmes de fichiers sur des
partitions différentes d'un même disque.
Le Système de fichiers

▪ Le système de fichiers par défaut de Linux est nommé


Second Extended File System (ext2 en abrégé).
▪ L'inconvénient de ce système est une faible tolérance à
une panne. En cas d'arrêt brutal du système, la
reconstruction du disque peut être longue.

▪ D'autres systèmes existent :


▪ Ext3 - Successeur du précédent, il évite le problème précédent
avec une journalisation (enregistrements) des opérations
Le Système de fichiers

▪ D'autres systèmes existent :


▪ ReiserFs – Système également journalisé.
▪ JFS - Système développé et utilisé par IBM. Il est proche de
ReiserFs
▪ XFS – Créé par SGI pour son système IRIX
▪ Linux sans les utilisés reconnaît d'autres systèmes de fichiers : FAT
et NTFS
▪ 1 partition = 1 système de fichiers
Le Système de fichiers
▪ Mais, contrairement à Windows, le système Linux n'utilise pas la
notion de support (disque dur, disquette, cd-rom…).
▪ Chaque système de fichiers est rattaché (on dira monté) à une
arborescence unique.
▪ Exemple, soit les 3 systèmes de fichiers suivants :
▪ 1 disque dur avec 2 partitions
▪ 1 cd-rom
Vision Windows Vision Linux
/

▪ Partition 1 sous le nom de C:\


▪ Partition 2 sous le nom de D:\ Arborescence de la Arborescence de la Arborescence du
▪ Cd-Rom sous le nom de E:\ partition 1 partition 2 Cd-Rom
Le Système de fichiers
▪ Les utilisateurs voient donc une arborescence unique
sans connaître le support sur lequel sont implantés les /
fichiers (un système de fichiers peut être d'ailleurs
rattaché –monté- plusieurs fois).
▪ A l'installation de Linux une partition (donc un système
de fichiers) doit être désignée pour être la racine de
l'arborescence du système global sous laquelle seront
montés tous les autres système de fichiers. Rep2 Rep3
Rep1

▪ Principe du montage d’un file system :


mount perif /rep2

▪ Cette commande signifie attacher (monter) le file


RepA RepB RepC
system situé sur le périphérique "perif" sous le
répertoire "/Rep2".
Le contenu d'un système de fichiers Linux
Il n’existe pas de norme d’organisation du système de fichiers, mais un
standard est à peu près suivi par les différentes distributions de Linux.
/bin Contient les fichiers exécutables essentiels au système
/boot Contient le noyau et les fichiers nécessaires au gestionnaire de démarrage
/dev Contient les fichiers périphériques du système (dev = device)
/etc Contient les fichiers de configuration du système et certains scripts
/home Contient tous les répertoires personnels des utilisateurs
/lib Contient les librairies du système et les modules du noyau
/lost+found Contient le stockage des fichiers retrouvés par fsck
/mnt Répertoire disponible et proposé pour le montage de futur système de fichiers
/root Contient le répertoire de base de l'administrateur
/sbin Contient les fichiers exécutables pour l’administration du système donc surtout utilisé
par root.
/tmp Contient les fichiers temporaires créés par certains programmes

/usr Contient les programmes, les librairies et les fichiers accessibles pour l’utilisateur
/var Contient les données variables liées à la machine (spool, traces)
Le contenu d'un système de fichiers Linux

/usr Généralement cette arborescence fait l'objet


d'un "file system" séparé. On y retrouve des
noms de répertoire identiques à ceux de la
racine (mais pour les utilisateurs) :
/usr/bin ; /usr/etc ; /usr/lib ; /usr/sbin
/home Ce répertoire peut également faire l’objet d’un
file système séparé. Il contient le répertoire
personnel de chaque utilisateur. Ce répertoire
est créé automatiquement à la création de
l’utilisateur
Le contenu d'un système de fichiers Linux

/dev Ce répertoire contient les gestionnaires des


différents périphériques. Le nom du fichier de
chaque type de périphérique est "codifié" :
console : Ecran
hd…… : Disque dur IDE (hda : 1er disque dur,
hda1 : partition 1 du disque hda, etc…)
sd…… : Disque dur SCSI
fd…… : Disquette( fd0…. -suivi de la taille-,
"disquette A:")
tty….. : Console utilisateur (obtenu avec Alt-F1..)
Le Système de fichiers
Les commandes
▪ Créer un système de fichiers (formatage) :
mkfs /dev/xxxxx
(mkfs = make file system)
Exemples :
mkfs /dev/hd3
mkfs /dev/fd0
L'unité ne doit pas être montée
Le Système de fichiers
Les commandes
▪ Monter, démonter un système de fichiers :
mount /dev/xxxx /point_de_montage
Attention, le point de montage doit exister
umount /dev/xxxx
Exemples :
mount /dev/hd3 /mnt
umount /dev/fd0
Un contenu préexistant d'un répertoire est caché après une commande de
montage dans ce répertoire.
Le Système de fichiers
▪ Informations sur le système de fichiers :
fdisk : Affiche les partitions
df : Montre la capacité des systèmes de fichiers et leur point
de montage
du rep : Montre la capacité du répertoire rep

▪ Les montages effectués au démarrage du système sont


dans le fichier :
/etc/fstab
Arborescences
▪ Les fichiers sont regroupés dans des collections nommées
répertoires (fichiers particuliers)
▪ Les répertoires sont organisés en arborescence
▪ Il existe un répertoire racine. Chaque répertoire peut contenir :
▪ D’autres répertoires
▪ Des fichiers
▪ Ceci permet d’avoir une adresse unique (chemin complet) pour
retrouver ses fichiers :
▪ sous Windows → c:\home\Fred\Cours\L3\cours3.ppt
▪ sous Unix/Linux → /home/Fred/Cours/L3/cours3.ppt
Editeur de texte
▪ Le système Linux repose sur de nombreux fichiers texte
modifiable avec un simple éditeur de texte.

▪ Les 2 éditeurs historiques du monde Unix :


▪ vi ou vim : (créé par Billy Joy) pour les petites
modifications. En cas de gros développements il est
préférable d'utiliser…
▪ emacs (créé par Richard Stallman)
▪ gedit
La Sécurité – Les utilisateurs
▪ Linux est un système multiutilisateurs. Il doit donc permettre l'administration des
comptes.

▪ Commandes pour
▪ Créer un utilisateur :
adduser nom_user
▪ Affecter un mot de passe :
passwd nom_user

Cette seconde commande n'est pas obligatoire mais fortement conseillée.


L'utilisateur peut évidemment modifier son mot de passe avec cette même
commande
La Sécurité – Les utilisateurs
▪ Résultats de cette création :
▪ Ajout d'un compte pour l'utilisateur (uid) avec un mot de passe
éventuellement
▪ Création d'un groupe dit primaire (gid) qui par défaut porte son nom
▪ Création d'un répertoire personnelle
/home/nom_user
Répertoire initialisé avec un contenu situé dans /etc/skel

▪ Les 2 premiers points se traduisent concrètement par l'ajout d'une ligne dans
les fichiers :
/etc/passwd
/etc/group
▪ /etc/passwd et /etc/group sont deux fichiers texte que l'administrateur peut
modifier avec un éditeur de texte.
La Sécurité – Les utilisateurs
▪ Une ligne du fichier /etc/passwd se présente ainsi (séparateur de
champs ":") :
sandra:*:300:400:Sandra Garnier:/home/sandra:/bin/bash
▪ Respectivement
▪ Nom de l'utilisateur (login)
▪ Mot de passe crypté (cf. fichier /etc/shadow)
▪ Numéro de l'utilisateur (uid)
▪ Numéro de groupe (gid)
▪ Champ commentaire (nom par exemple)
▪ Le répertoire de démarrage
▪ Interpréteur de commande (shell)
La Sécurité – Les utilisateurs
▪ La commande adduser permet également de fixer toutes les valeurs qui sont, sinon,
fixées par défaut :
adduser –u 250 –g 600 –G comedy,users brad
Les paramètres de la commande adduser
-u uid Pour fixer le numéro de l'utilisateur
-g gid Pour fixer le numéro du groupe primaire. Le groupe doit
exister dans /etc/group
-G liste Appartenance de l'utilisateur à une liste de groupes
(séparateur "," – sans espace)
-s shell Attribution du shell par défaut /bin/bash
-c commentaire
-d répertoire Par défaut le répertoire porte le nom de l'utilisateur et
personnel est placé dans /home
-m Pour créer le répertoire personnel
La Sécurité – Les utilisateurs

Les paramètres de la commande adduser

-p mot de passe Mot de passe crypté


-k rep-skel Recopie le contenu de rep-skel dans le répertoire
personnel, par défaut utilisation de /etc/skel.
-c commentaire
-e date Fixe une date d'expiration du compte (YYY-MM-DD)

Il existe également la commande useradd qui présente quelques différences avec


adduser, en particulier elle n'initialise pas le profil de l'utilisateur avec /etc/skel. Ce
travail est laissé à la charge de l'administrateur
La Sécurité – Les utilisateurs

▪ Une ligne du fichier /etc/group se présente ainsi


(séparateur de champs ":") :
comedie:*:800:sandra,ingrid,michelle
sandra:*:400:
users :*:100: sandra,ingrid,michelle,alain
▪ Respectivement
▪ Nom du groupe
▪ Mot de passe du groupe
▪ Numéro du groupe (gid)
▪ Liste des utilisateurs appartenant au groupe
séparés par des virgules
La Sécurité – Les utilisateurs
▪ Traditionnellement, pour des raison de sécurité les mots de passe cryptés ne figurent
pas dans le fichier /etc/passwd.

Les utilisateurs ont accès à ce fichier lors de leur connexion, il est donc accessible en
lecture.

▪ Les informations confidentielles sont stockés dans le fichier /etc/shadow.

▪ Une ligne du fichier /etc/shadow se présente ainsi (séparateur de champs ":") :


nom_user:passwd:last_modif:may_modif:
must_modif:avertir:expiration:desactiv:reserved
Par exemple - username:Npge08pfz4wuk:9479:0:10000::::
La Sécurité – Les utilisateurs
nom_user:passwd:last_modif:may_modif: must_modif:
avertir:avant_expiration:date_expiration:réservé
Où :
nom_user Le Nom de l'Utilisateur
passwd Le mot de passe crypté.
last_modif Date de la dernière modification (en nombre de jours depuis le
1er janvier 1970).
may_modif Nombre de jours avant que le mot de passe puisse être modifié
(un 0 indique qu'il peut être changé à n'importe quel moment).
must_modif Nombre de jours avant que le mot de passe ne doive être
modifié
avertir Nombre de jours durant lesquels l'utilisateur est prévenu de
l'expiration de son mot de passe.
La Sécurité – Les utilisateurs
nom_user:passwd:last_modif:may_modif: must_modif:
avertir: avant_expiration:date_expiration :réservé
Où :

avant_expiration Nombre de jours entre l'expiration du mot de passe et la


fermeture du compte.
date_expiration Date de la fermeture du compte (en nombre de jours
depuis le 1er janvier 1970).
réservé Champ réservé à une utilisation future

M jours N jours
(avertir) (avant_expiration) Date_expiration
La Sécurité – Les utilisateurs
▪ Pour supprimer un mot de passe, l'administrateur supprime
simplement le contenu du champs "mot de passe" avec un
éditeur de texte.
▪ La commande id permet d'obtenir les informations concernant
un utilisateur, par exemple avec : id sandra
on obtiendra :
uid=300 (sandra) gid=400 (sandra)
groupes=400(sandra),100(users), 800(comedie)
La Sécurité – Les utilisateurs
▪ Autres commandes …
▪ Modification des informations sur un utilisateur :
usermod paramètres nom_user
Les paramètres sont identiques à ceux de la commande
adduser,

par exemple :
usermod –u 670 –c directrice sandra
Modification du numéro et du commentaire sur l'utilisateur
sandra
La Sécurité – Les utilisateurs
▪ Autres commandes …

▪ Suppression d'un utilisateur :


userdel nom_user
supprime la ligne de nom_user dans /etc/passwd
userdel –r nom_user
-r afin de supprimer également le répertoire
La Sécurité – Les utilisateurs
▪ Les groupes sont des ensembles d'utilisateurs qui partagent les
mêmes fichiers et répertoires.

▪ Un utilisateur doit appartenir au moins à un groupe. Il est créé


au moment de la création de l'utilisateur et est dit groupe
primaire.

▪ Un utilisateur peut faire partie d'autres groupes dits groupe


secondaires.
La Sécurité – Les utilisateurs
▪ Les commandes pour…
▪ Connaître les groupes d'un utilisateur :
groups nom_user
▪ Créer un groupe :
groupadd nom_groupe (ou addgroup)
▪ Supprimer un groupe :
groupdel nom_groupe
▪ Ajouter un utilisateur à un groupe :
▪ Par usermod (usermod –G grp1,grp2 nom_user)
▪ Par l'édition du fichier /etc/group
La Sécurité – Les Fichiers
▪ Un système multiutilisateurs doit également permettre à
chaque utilisateur de protéger et/ou partager ses fichiers
et répertoires.
▪ La notion de partage n'existe pas en tant que telle (comme
dans Windows 200x). Un répertoire est partagé si
plusieurs utilisateurs ont des droits sur ce répertoire.
La Sécurité – Les Fichiers

▪ Avec la commande ls –l on obtient un ensemble de


lignes comme :
-rw-r--r-- 1 sandra sandra 1200 oct 19 12 : 39 page.html
▪ Où respectivement on trouve :
• Les droits sur le ficher ou le répertoire (-rw-r--r--)
• Le nombre de liens sur le fichier (1 signifie que le
fichier n'a aucun lien qui pointe vers lui, 2 (ou plus)
signifiant qu'il existe un lien (ou plus) vers lui.
•le nom du propriétaire du fichier (sandra)
•le nom du groupe propriétaire (sandra)
La Sécurité – Les Fichiers
➢ Exemple :
ls : Liste le contenu du répertoire courant {ou le(s) fichier(s) ou répertoire(s) spécifiés}

u
g
o
La Sécurité – Les Fichiers

-rw-r--r-- 1 sandra sandra 1200 oct 19 12 : 39 page.html


• La taille du fichier (1200)
• la date et l'heure de la dernière modification (oct 19 12 : 39)
• le nom complet du fichier (page.html)

▪ Les droits se décomposent en 4 zones :


.|...|...|... soit -|rw-|r--|r—
▪ La première zone indique la nature du fichier :
"-" pour un fichier normal,
"d" pour un répertoire,
"l" pour un lien
La Sécurité – Les Fichiers

▪ Les 3 dernières zones correspondent aux 3


catégories d'utilisateurs possible du fichier.
... ... ...
u g o
▪ La section u (u=user) fixe les droits accordés
au propriétaire du fichier.
▪ La section g (g=group) fixe les droits accordés
aux utilisateurs faisant partie du groupe
auquel appartient le fichier.
▪ La section o (o=other) fixe les droits des autres
utilisateurs.
La Sécurité – Les Fichiers
▪ Chaque zone propose à la catégorie correspondante 3 droits.

Dans l'ordre
rwx
▪ Read (r) droit de lecture autorisé ; "-" si non permise
▪ Write (w) droit d'écriture autorisé ; "-" si non permise
▪ eXecute (x) droit d'exécution autorisé ; "-" non permise
La Sécurité – Les Fichiers
▪ Signification de ces droits sur les fichiers :
•"r" : Droit de lire le contenu du fichier
•"w" : Droit d'écrire dans le fichier
•"x" : Droit d'exécuter si le fichier est un script ou un fichier binaire

▪ Signification des droits sur les répertoires :


•"r" : Droit de lire le contenu du répertoire, afficher son contenu
(commande ls)
•"w" : Droit de modifier le contenu, créer, supprimer des fichiers et
des répertoires (commandes cp, mv, rm)
•"x" : Droit d'accéder aux fichiers du répertoire et de s'y déplacer
(commande cd)
Note si on attribue "w" il faut attribuer aussi "x" sur le répertoire
La Sécurité – Les Fichiers
▪ Le créateur d'un fichier en devient le propriétaire.
▪ Le groupe primaire auquel appartient le créateur au
moment de la création devient le groupe du fichier.
▪ Le propriétaire à le droit de modifier tous les droits sur les
fichiers et les répertoires dont il est propriétaire, y compris
de transmettre son droit de propriété.
La Sécurité – Les Fichiers
▪ Changer les droits d'accès :
chmod nouveau_droits fichier(s)
On utilise généralement les notations :
[u, g, o, a] pour désigner le bénéficiaire (a=all)
[r, w, x] pour désigner le droit
[+, -, =] pour désigner l'opération (ajouter, retirer ou affecter)
La Sécurité – Les Fichiers
▪ Changer les droits d'accès :
▪ Fixer de nouveaux droits (remplacement)
chmod u=rwx,g=rw,o=r liste.txt
pour obtenir : -rwxrw-r--
chmod g=rwx document
les autres restent inchangés
chmod u=rw,g=r,o= liste2.doc
pour obtenir : -rw-r-----
La Sécurité – Les Fichiers
▪ Changer les droits d'accès :
▪ Modifier les droits
chmod g+rw liste.txt
avant : -rwx--xr– résultat : -rwxrwxr--
chmod go-rx document
avant : -rwxrwxrw- résultat : -rwx-w--w-
chmod a-x liste2.doc
avant : -rwxrwxr-x résultat : -rw-rw-r--
La Sécurité – Les Fichiers
▪ Changer les droits d'accès :
▪ Modifier les droits, récursive
chmod –R nouveau_droits répertoire
Exemple :
chmod –R go-rwx /home/herve
Cette commande supprime tous les droits sauf au propriétaire sur
tous les fichiers, répertoires et sous-répertoires à partir de
/home/herve
La Sécurité – Les Fichiers

▪ Changer les droits d'accès :


▪ Utilisation de l'octal
En binaire les droits affectés aux différents groupes
vont de 000 (pour "---") à 111 (pour "rwx") en
passant par 101 (pour "r-x")
En décimal ces valeurs vont de 0 à 7.
chmod 764 lettre.txt
chmod u=rwx g=rw o=r lettre.txt
Ces deux commandes sont équivalentes
La Sécurité – Les Fichiers

▪ Changer les droits d'accès :


▪ Quels sont les droits affectés à la création d'un
fichier ou d'un répertoire ?
▪ La commande umask :
umask (pour afficher le masque)
umask –S (pour afficher le masque sous forme symbolique)
umask valeur_masque (pour modifier le masque)
La Sécurité – Les Fichiers
▪ Changer les droits d'accès :
Le masque donné à la commande umask précise les droits qui seront
supprimés à la création du fichier. Par exemple avec :
umask 021 (en binaire 000 010 001)
un fichier créé avec ce masque obtiendra les droits suivants :
111 101 110 soit u=rwx g=rx o=rw
La Sécurité – Les Fichiers

▪ Changer les droits d'accès :


Pratiquement les droits effectifs sont obtenus
de la façon suivante :
Octal Binaire
777 111 111 111 Permissions maximum
XOR (ou -) 021 000 010 001 Masque (umask)
= 756 111 101 110 Permissions appliquées
La Sécurité – Les Fichiers

▪ Changer les droits d'accès :


La modification des droits à l'aide de la
commande umask a des effets seulement
durant la session en cours.
Pour rendre cette modification permanente, il
faut modifier le script :
/etc/profile (par root pour le profil général)
$HOME/.bash_profile (par l'utilisateur pour son profil)
La Sécurité – Les Fichiers

▪ Les commandes pour…


▪ Changer le propriétaire
chown [-R] new_proprio fichier
▪ Changer le groupe propriétaire
chgrp [-R] new_groupe fichier
(avec -R : l'option de récursivité)
Seul le propriétaire actuel (ou root) peut exécuter
ces commandes
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Le droit SUID
Les utilisateurs exécutent des commandes qui écrivent dans des
fichiers dont les droits sont en "lecture seule" ou "aucun".
Par exemple :
• La commande "cat /etc/shadow" exécutée par un utilisateur
entraînera un refus ("r - - - - - - - -").
• Par contre la commande /usr/bin/passwd permet à ce même
utilisateur de modifier son mot de passe donc d'écrire dans le
fichier /etc/shadow.
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Le droit SUID
- Les droits présentés par la commande /usr/bin/passwd sont :
r - s - - x - - x.
- L'utilisateur peut exécuter la commande ("x") mais il ne peut
écrire dans /etc/shadow
- Le "s" qui se superpose au droit "x" du propriétaire root
permet à l'utilisateur exécuter la commande avec les droits du
propriétaire root (le "s" ne supprime pas le "x"qui est
simplement caché).
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Positionner le droit SUID
La valeur octal du droit SUID est 4000.
Par exemple sur le fichier "comde" on désire obtenir les droits :
"r – s r – x - - -":
chmod 4550 comde
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Le droit SGID
Un "s" se superpose ici au droit "x" du groupe propriétaire d'un
répertoire.
D'une façon générale, à la création d'un fichier le groupe
propriétaire est celui du propriétaire du fichier.
Avec le droit SGID le groupe sera celui défini au niveau du
répertoire père.
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Le droit SGID
Il s'agit d'un mécanisme d'héritage comme sous Windows.
▪ Positionner le droit SGID
La valeur octal du droit SGID est 2000.
Par exemple sur le répertoire"/home/doc" on désire obtenir les droits
: "drwxr-s- - -":
chmod 2750 /home/doc
La Sécurité – Les Fichiers
▪ Les droits étendus
▪ Le "sticky bit"
Ce droit s'applique aux répertoires et est symboliquement représenté
par un "t" à la place du "x" de la catégorie "o«

Ce droit permet d'interdire à un utilisateur de supprimer un fichier


dont il n'est pas propriétaire alors qu'il à le droit d'écrire dans le
répertoire (donc de supprimer).
La Sécurité – Les Fichiers
▪ Positionner le "sticky bit"
La valeur octal de ce droit est 1000.

Par exemple pour appliquer ce droit sur le répertoire"/home/doc" et


obtenir les droits : "drwxrwxrwt":
chmod 1777 /home/doc
La Sécurité – Les Fichiers
Remarque :
▪ Si le droit "x" n'est pas accordé sous le droit "s" ou "t" le droit étendu
apparaît en majuscule "S" ou "T"

Soit chmod 2750 /home/doc ("drwxr-s- - -")


Avec chmod 2740 /home/doc
On obtiendra "drwxr-S- - -"
(suppression du droit "x" derrière le "s")
Arrêt du système

Les paramètres de la commande shutdown


h: mn Heure à laquelle il faut arrêter le système
+n Arrêter le système dans n minutes
-t sec Arrêter le système dans sec secondes
'' Message...'' Affiche le message sur tous les terminaux actifs.
now Arrêter le système maintenant.
-f Arrêt plus rapide.
-r Redémarrer l'ordinateur une fois la procédure d'arrêt
terminée (reboot).
-h Le système doit être arrêté (extinction de la machine).
-q Les messages ne doivent pas être affichés à l'écran.
-k Affiche les messages sans redémarrer le système.
-c Annule la procédure d'arrêt en cours
Arrêt du système

▪ Exemples :
shutdown –r +5 "Arrêt du système imminent"
shutdown –h now
▪ La séquence de touches Ctrl-Alt-Del qui
effectue un arrêt du système se définit dans
le fichier /etc/inittab :
ca::ctrlaltdel:/sbin/shutdown -r now
La gestion des processus
▪ Les systèmes Linux (comme Unix et Windows NT et
successeurs) sont des systèmes d'exploitation préemptifs.

▪ Système d'exploitation coopératif : Système multitâche qui doit


attendre qu'une application lui rende la main avant de pouvoir
la donner à un autre programme.

▪ Système d'exploitation préemptif : Système multitâche qui peut


lancer ou arrêter à tout moment n'importe quelle application.
La gestion des processus
▪ Ainsi au moment "t", plusieurs processus sont cours d'exécution.
Le système doit donc être capable de les identifier.

▪ Il attribue à chaque processus un numéro appelé PID (Process


Identification).

▪ De plus, un processus peut lui même créer un autre (ou plusieurs)


processus qui devient donc un processus père ou parent, le
nouveau processus, un processus enfant. Ce dernier est identifié
par son PID, et le processus père par son numéro de processus
appelé PPID (Parent Process Identification).
La gestion des processus
▪ Trois commandes permettent de visualiser les processus :
▪ Visualisation statique : ps [-ef] (cf. autres options)
-e (affichage de tous les processus) et -f (affichage détaillée)
▪ Avec ps –ef on obtient par exemple :
La gestion des processus

Où :
UID Nom de l'utilisateur qui a lancé le processus
PID Numéro du processus

PPID Numéro du processus père ou parent

C Facteur de priorité (plus la valeur est grande, plus le


processus est prioritaire)
STIME Heure de lancement du processus

TTY Nom du terminal sur lequel exécute le processus


TIME Durée de traitement du processus

COMMAND Nom du programme qui a donné naissance au processus


La gestion des processus

▪ Visualisation dynamique : top (cf. options)


Cette commande fournit également d'autres informations (RAM, CPU,
etc.).

▪ Visualisation arborescente : pstree


Cette présentation permet de voir plus facilement les dépendances entre
processus.
La gestion des processus
▪ Suppression d'un processus
la commande : kill [-numéro de signal] PID

PID
le numéro du processus
-numéro de signal
Un nombre allant de 1 à 30 qui est une valeur système précis
2 : SIGINT ; 9 = SIGKILL ; 15 = SIGTERM
(valeur par défaut 15)
La gestion des processus

▪ Un utilisateur ne peut arrêter que les


processus dont il est propriétaire c'est à dire
qu'il a lancé.
▪ Seul l'administrateur a le droit d'arrêter un
processus ne lui appartenant pas.
Exemples :
kill 321 (termine le processus)
kill –9 321 ("tue" le processus)
killall nom_prog (arrête le programme)
Questions
Programmation orientée objet
La programmation SHELL
La programmation SHELL
❖ Le Shell est plus qu’un interpréteur de commandes: c’est
également un puissant langage de programmation. Tout
système d’exploitation offre cette possibilité d’enregistrer
dans des fichiers des suites de commandes invoquées par
la suite. Mais aucun système d’exploitation n’offre autant
de souplesse que le Shell dans ce type de programmation.

❖ Un script est un fichier texte contenant les commandes à


exécuter ainsi que, éventuellement, des structures de
contrôle, des boucles, des assignations des variables, des
fonctions et des commentaires. L’écriture des scripts,
permet à l’administrateur de simplifier la réalisation des
tâches répétitives.
La programmation SHELL
❖ Comme tout langage de programmation conventionnel,
le Shell possèdent des instructions et des variables. Leurs
noms et contenus sont des chaînes de caractères.

❖ L’assignation (Bourne-Shell) d’une variable à une


variable se fait par un nom; la référence à cette variable se
fait par son nom précédé du caractère « $ ».

❖ Il est également possible de créer des fichiers contenant


une suite de commande, qui sont appelés les scripts et
peuvent être exécutés.
La programmation SHELL
❖ Avant l’interprétation des commandes, c’est-à-dire apparition du prompt, le Bourne-Shell exécute deux
fichiers d’initialisation: etc/profile et .profile.

✓ Le fichier /etc/profile est géré généralement par l’administrateur.


✓ Le fichier .profile est géré par l’utilisateur.

❖ Ces fichiers d’initialisation permettent de modifier ou de créer des variables internes au Shell, ou des
variables d’environnement, de créer des fonctions, etc.
La programmation SHELL
❖ Le jeu d’instructions lui-même comporte:

✓ Toutes commandes Linux;


✓ L’invocation de programmes exécutables (ou de scripts) avec passage de paramètres;
✓ Des instructions d’assignation de variables;
✓ Des instructions conditionnelles ou itératives;
✓ Des instructions d’entrée-sortie.

➢ Scripts
✓ Un script correspond à une suite de commandes écrite dans un fichier.
✓ Les variables spéciales les plus utilisées dans l’écriture des scripts :

# : nombre d’arguments de la ligne de commande (entre 0 et 9)


* : liste contenant tous les arguments du programme shell
? : contient le code retour de la dernière commande exécutée (0 si erreur, 1 sinon)
La programmation SHELL
❖ Création: un script étant un fichier en mode texte, il doit être crée avec un éditeur
de texte.

❖ Exécution: un script doit être exécutable, pour qu’on puisse l’exécuter par son
nom.

❖ Presque tous les langages informatiques autorisent d’insérer des commentaires; le


Shell n’échappe pas à la règle. Pour cela, il suffit de faire précéder chaque ligne de
commentaire du caractère « # ».

❖ Les lignes de commentaire sont tout ignorés par l’interpréteur. Elles sont
indispensables pour tout programmeur, car elles lui permettent de « commenter »
son programme.

❖ Les lignes blanches ne sont pas interprétées non plus. N’hésitez donc surtout pas
à espacer votre script, les lignes blanches ne consomment presque rien en termes
d’espace disque, ce n’est pas une ressource rare, et elles facilitent la lecture pour
un être humain.
La programmation SHELL
❖La commande echo sert à afficher un texte. Chaque ligne
de texte est écrite sur une ligne à part.

❖Si vous voulez annuler le retour chariot qui a lieu par


défaut à la fin de toute commande echo, il faut utiliser
l’option –n.

❖Pour citer le contenu d’une variable, on ajoute le signe


dollar ($) devant son nom

❖La commande read sert lire les variables.


La programmation SHELL
Exemple1:
#!bin/sh
#fichier ‘’premier_script ’’
echo –n ’’Bonjour tout le monde’’
echo ’’On est en séance du cours programmation SHELL’’

Résultat :
Bonjour tout le monde … On est en séance du cours programmation SHELL
Exemple 2:
#!bin/sh
#fichier ‘’mon_script ’’
echo ‘’écrivez votre nom puis votre prénom’’
read nom prénom
echo ‘’nom: $nom’’
echo ‘’prénom: $prénom’’
La programmation SHELL
❖ On peut faire passer un script un argument lors de l’invocation.
❖ Le nombre de paramètres passés en argument à un script n’est pas limité, toutefois les neufs
variables 1, …, 9 permettent de désigner ces paramètres dans le script.
❖ La commande shift permet de faire un décalage de paramètre, ainsi $i sera désigné par $i+1.

#/bin/sh
#fichier « arg_shift »
Echo $1 $2 $3
Shift
Echo ‘apres shift’
Echo $1 $2 $3
Exemple:
itri@itri-virtualBox: ~ $ arg_shift 1 2 3 4
123
Après shift …
234
itri@itri-virtualBox: ~ $
La programmation SHELL
▪ En plus des variables vues précédemment, le Shell
prédéfinit d’autres variables facilitent la programmation:

$0 Le nom de la commande (i.e: du script)

$1, $2, etc Le premier, le deuxième, etc, arguments passés au script

$* La liste de tous les arguments passés au script

$# Le nombre d’arguments passés au script

$? Le code de retour de la dernière commande lancée

Le numéro de processus de la dernière commande lancée en tâche


$!
de fond

$$ Le numéro de processus du Shell lui-même


La programmation SHELL
Exemple:

#/bin/sh
#fichier « var_sp »
Echo $0 a été appelé avec $# paramètres
Echo qui sont : $*

itri@itri-virtualBox: ~ $ var_sp a b c d
Var_sp a été appelé avec 4 paramètres
Qui sont : a b c d
itri@itri-virtualBox: ~ $
La programmation SHELL
❖ La liste des variables et leur valeur est obtenue à l’aide de la commande
set sans argument. Pour affecter une valeur à une variable on utilise
simplement le signe «=» sans espace.

❖ Syntaxe:
Nom_variable=valeur

❖La référence d’une variable est obtenue en faisant précéder le nom par $.
Ainsi «echo $nom_variable » affichera le contenue.

Exemple:

itri@itri-virtualBox: ~ $ echo $Faculté


FPO
itri@itri-virtualBox: ~ $
La programmation SHELL
❖ Les commandes env ou printenv permettent de visualiser la liste et le contenu des variables
d’environnements (set donne la liste de toutes les variables et leur valeur).

❖ La commande unset nom_variable permet de supprimer une variable, sauf les variables PATH, PS1,
PS2, MAILCHECK…

❖ Certaines variables ont une signification particulière pour le Bourne-Shell. Les principales seront
indiquées ci-dessous par ordre alphabétique.

✓ CDPATH: Liste des chemins d’accès utilisés par la commande cd lors d’un changement de
répertoire en relatif.
✓ HOME: Indique le répertoire d’acceuil, correspond à l’argument par défaut de la commande cd.
✓ PATH: Liste des chemins d’accès contenant les commandes. Chaque chemin d’accès est séparé par
le caractère « : ».
La programmation SHELL
❖ Pour la programmation des actions conditionnelles, nous disposons de trois outils:

✓ L’instruction if;

✓ La commande test qui la complète;

✓ L’instruction case.
La programmation SHELL
❖ L’instruction if: présente trois variantes qui correspondent aux structures sélectives à une, deux ou n
alternatives.

▪ La sélection à une alternative: if …. then …… fi


▪ La sélection à deux alternatives: if …. then …. else …. fi
▪ La sélection à n=3 alternatives: if …. then …. elif ….. then …. else …. fi

▪ Les commandes 1 ne sont exécutées que si la condition renvoie un code retour nul ($?=0).

if condition 1
then commandes 1
elif condition 2
then commandes 2
……
elif condition (n-1)
then commandes (n-1)
else
commandes n
fi
La programmation SHELL
❖ La commande test: est une opération dont le but est d’évaluer la valeur d’une expression. Cette
expression peut être simplement l’existence de quelque chose (par exemple, d’un fichier, ou bien d’une
variable), ou peut être une proposition.

❖ Un test renvoie un code de retour. Un code de retour est un nombre (0 ou autre), qui correspond à une
réponse de type « vrai » ou « faux ». C’est ce code de retour qui permet la manipulation des tests dans
les structures de contrôle comme if, etc.

❖ Le code de retour 0 correspond à la réponse « vrai ». Pour répondre « faux », le programme répond …
autre chose (peut être 1, 2, -1 ou autre).

❖ Les expressions peuvent être niées par l’opérateur logique de négation « ! » et combinées par les
opérateurs logiques ou « -o » et et logique « -a ».
La programmation SHELL
❖ Les expressions les plus utilisées sont:
❑ Opérateurs arithmétiques:
✓ -eq (equal): égal à (signe « =»);
✓ -ne (not equal): différent de (signe « ≠ »;
✓ -gt (greater than): strictement supérieur à (signe « > »);
✓ -it (lesser than): strictement inférieur à (signe « <»);
✓ -ge (greater or equal): supérieur ou égal à (signe « ≥ »;
✓ -le (lesser ou equal): inférieur ou égal à (signe « ≤ »

❑ Opérateurs sur les fichiers:


▪ Nature du fichier:
✓ -e (exists): vérifie l’existence d’un fichier;
✓ -f (file): vérifie l’existence d’un fichier, et le fait qu’il s’agisse bien d’un fichier au sens strict;
✓ -d (directory): vérifie l’existence d’un répertoire;
✓ -l (link): vérifie si le fichier est un lien symbolique.
La programmation SHELL
❖ Attributs du fichier:
✓ -s (size): vérifie qu’un fichier n’est pas vide.

❖ Droits sur le fichier:


✓ -r (readable): vérifie si un fichier peut être lu;
✓ -w (writable): vérifie si un fichier peut être écrit ou modifié;
✓ -x (executable): vérifie si un fichier peut être exécuté.

❖ Comparaison des fichiers:


✓ -nt (newer than): vérifie si un fichier est plus récent qu’un autre;
✓ -ot (older than): vérifie si un fichier est plus ancien qu’un autre.
La programmation SHELL
❖ L’instruction case: est une instruction très puissante et très
commode pour faire un choix multiple.

❖ La boucle commence par évaluer la chaîne. Ensuite, elle va lire


chaque motif. Enfin, et dès qu’une chaîne correspond au motif,
elle exécute les commandes appropriées.

❖ La chaîne peut être lue, passée en paramètre ou être le résultat


d’une commande exécutée avec l’opérateur backquote (‘).

❖ Dans les différentes chaînes motif 1 à n, on peut utiliser les


caractères spéciaux (*, ?, …). De plus, pour regrouper plusieurs
motifs dans une même alternative, en utilisant le caractère
« | ».
La programmation SHELL
case chaine in
Motif 1) commandes 1;;
Motifs 2) commandes 2;;
*) commandes 3;;
esac

Exemple:
#!/bin/sh
echo "Entrer une couleur"
read C
case $C in
"vert")
echo "Vous pouvez passez" ;;
"orange")
echo "Soyez prudent" ;;
"rouge")
echo "Stop, vous ne pouvez pas passer" ;;
*)
echo "Erreur" ;;
esac
La programmation SHELL
❖ L’interpréteur de commandes gère trois types de constructions pour les boucles:

❖ Pour les deux premières constructions, le fonctionnement est similaire à la commande if. Pour la boucle
for, la variable prendra successivement toutes les valeurs de la liste.

❖ Les commandes break et continue permettent de modifier le fonctionnement des boucles. La


commande break est utilisée sous deux formes:

✓ Break: sort de la boucle courante;


✓ Break n: n étant un entier supérieur à 0, permet de sortir de n boucles imbriquées;
✓ continue: permet de passer à l’itération suivante sans exécuter les commandes situées après.
La programmation SHELL

while condition
do commandes
done

until condition
do commandes
done

for var in liste


do commandes
done
La programmation SHELL
❖ Le Shell permet de définir des fonctions appelables par le script. Cette méthodes
est plus efficace que d’appeler des scripts externes car la fonction est exécutée
dans le même processus.

❖ La syntaxe de définition d’une fonction est:

Nom_fonction (){
Instruction 1
Instruction 2

}

❖ Et elle est appelée par:


Nom_fonction [paramètres]
La programmation SHELL
▪ Les fonctions reçoivent les paramètres d’appel dans les
variables $1 à $9 et $*. La valeur de $0 reste inchangée.

❖ Il est possible de déclarer des variables locales à une fonction


en utilisant la commande locale avant la déclaration de la
variable. Dans ce cas, la modification de la variable locale ne
modifie pas une variable globale portant le même nom.

▪ La commande return permet de spécifier le code de retour de


la fonction. S’il n’est pas spécifié, la variable $? est initialisée au
code de fin de la dernière commande de la fonction.

▪ Le Shell supporte les appels récursifs de fonctions. Comme tout


langage récursif, il faut faire très attention aux effets de bord et
aux variables non déclarées en local.
La programmation SHELL

#/bin/sh
#je définis une première fonction
Ecrire_sur_une_ligne(){
Echo –n$*
}

#je définis une deuxième fonction qui appelle la première


Saluer_utilisateur(){
Ecrire_sur_une_ligne ’’Bonjour ’’
Echo $USER
}
Questions

Vous aimerez peut-être aussi