Vous êtes sur la page 1sur 102

SIL/S2

Le système
d’exploitation Linux
PROFESSEUR: WAFAA IBRIHICH
MAIL: WAFAA_IBRIHICH@HOTMAIL.FR
2

Objectifs d’un OS
C’est quoi UNIX
OS Multitâche et multi-utilisateur
Système d’exploitation Linux
Les qualités du système
Caractéristiques générales
Composition de Linux

W.IBRIHICH
3

Les deux objectifs majeurs d’un système d’exploitation sont:


Transformer le matériel en une machine utilisable, c-à-d fournir
des outils adaptés aux besoins des utilisateurs indépendamment
des caractéristiques physiques;
Optimiser l’utilisation des ressources (matérielles et logiciels).
Ces deux objectifs doivent être atteints en garantissant un bon
niveau en:
Sécurité: intégrité, contrôle d’accès, confidentialité, …
Fiabilité: satisfaction des utilisateurs même dans des conditions
imprévues,
Performance du système informatique.
W.IBRIHICH
4

• Unix est né au début des années 70 dans les laboratoires Bell.


• Unix est un système :
• Multi-utilisateurs : plusieurs personnes peuvent partager les ressources de la même
machine, chaque utilisateur peut effectuer une ou plusieurs tâches en même temps.
• Multitâches : plusieurs programmes ou logiciels peuvent s’exécuter
concurremment
• Il existe plusieurs versions commerciales :
 AIX de IBM
 Sun Solaris de SUN Microsystems
 HP-UX de Hewlett Packard
 Tru64 Unix de Compaq
 etc.
• Plusieurs versions d’UNIX sont nées pour PC :
 Linux
 FreeBSD
 OpenBSD
W.IBRIHICH
 NetBSD …
5

Linux est un système d’exploitation multitâche et multi-utilisateur structuré en


couches :
• Noyau : la couche de plus haut niveau, elle assure la communication avec le
matériel. Le noyau s’occupe de :
• la gestion de la mémoire,
• l’accès aux périphériques (disque dur, lecteur de CD-Rom, clavier, souris,
…),
• la gestion du réseau, …
• Shell : interprète les ordres de l’utilisateur et les fait exécuter par le noyau.
Les ordres peuvent être passés soit directement au clavier, soit en utilisant des
outils graphiques de plus haut niveau.
• Applications : interagissent avec l’utilisateur ou avec d’autres applications et
W.IBRIHICH
communiquent avec le Shell ou avec le noyau.
6

• Nous avons l’habitude de dire que Linux est un système d’exploitation


• Linux n’est en réalité que le noyau du système d’exploitation
GNU/Linux (GNU = GNU is Not Unix)
• GNU est un projet qui a apporté des tas d’utilitaires au noyau Linux :
• compilateur gcc,
• tar, man, bash …
Linux est un noyau
GNU est un ensemble de programmes utilitaires
GNU/Linux est le système d’exploitation

Quelques liens :
• Histoire d’Unix : http://www.bell-labs.com/history/unix/
• Page officielle de Linux : http://www.linux.org
• Page officielle de GNU : http://www.gnu.org
W.IBRIHICH

• Histoire de Linux : http://www.linux10.org/history/


7

Code source facile à lire et à modifier, disponible commercialement et sur


le net;
Interface utilisateur simple, non-conviviale mais très puissant;
Le système est construit sur un petit nombre de primitives de base, de
nombreuses combinaisons possibles entre programmes;
Les fichiers ne sont pas structurés au niveau des données, ce qui favorise
une utilisation simple;
Toutes les interfaces avec les périphériques sont unifiées (système de
fichier);
C’est un système disponible sur nombreuses machines;
Les utilitaires et programmes proposés en standard sont très nombreux.
W.IBRIHICH
8

Systèmes de fichiers arborescents :


Arborescence unique de fichiers, même avec plusieurs (disques) de
stockage.
Entrée / Sortie compatible fichiers, périphériques et processus:
les périphériques sont manipulés comme des fichiers ordinaires,
Les canaux de communication entre le processus (pipe) s’utilisent
avec les mêmes appels systèmes que ceux destinés à la
manipulation des fichiers.

W.IBRIHICH
9

Linux comprend un noyau (Kernel) et des utilitaires, le noyau gère les


processus, les ressources (mémoires, périphériques …) et les fichiers.
Tout autre traitement doit être pris en charge par des utilitaires; c’est le cas
de l’interprète de commande.
L’interface entre le noyau Linux et les périphériques est assurée par les
gestionnaires de périphériques( devices driver).
L’interface entre le noyau Linux et les programmes utilisateurs est assurée
par un ensemble d’appels systèmes.
Linux comprend un noyau qui est le centre nerveux du système. Il permet
de faire le lien entre les programmes et le matériel. Chaque noyau possède
une version composée de 3 numéros séparés par un point (par exemple
2.2.10). Le deuxième numéros permet de savoir la version est stable
(numéro pair) ou en cours de développement (numéro impair). Le troisième
permet de savoir si la version est récente (plus le numéro est grand, plus la
version est récente).
W.IBRIHICH
10

Linux définit un système de fichiers hiérarchique avec un certain nombre


de répertoires standards /

bin dev etc home lib usr root …

fd0 lp étudiants profs


csh ls passwd
SIL Salah
 /root est le répertoire d’accueil du super-utilisateur (administrateur);
 /bin contient généralement les programmes utiles au démarrage;
 /etc contient les fichiers de configurations;
 /dev contient les fichiers relatifs aux devices (périphériques);
 /home contient les répertoires des utilisateurs;
 /lib contient les librairies du système;
 /usr contient les programmes ajoutés au système.
W.IBRIHICH
11

• Linux possède un mécanisme d’identification connu sous le nom de login


• Pour utiliser un système Linux sur une machine, il faut avoir un compte sur cette
machine
• Pour se connecter sur une machine il faut rentrer au clavier :
• son nom d’utilisateur : login
• son mot de passe : password
• Le système vérifie la correspondance entre le login et le mot de passe
• si échec, il refuse l’accès
• si correct, il lance la procédure de login (analyse différents fichiers de
configuration et met en place l’environnement de l’utilisateur)
• L’utilisateur est alors placé dans son répertoire d’accueil : c-à-d /home/SIL
W.IBRIHICH
12

 1) Démarrer et arrêter
 shutdown -h now: stoppe le système immédiatement sans
redémarrer
 Halt: stoppe tous les processus.
 shutdown -r 5: stoppe le système dans 5 mn et redémarre
 Reboot: stoppe le système et redémarre
 startx : démarre Xwindows
 Logout: stoppe une connexion
W.IBRIHICH
13

 mount -t iso9660 /dev/cdrom /mnt/cdrom:


monte un CDROM et l'appelle cdrom dans le répertoire /mnt
 mount -t msdos /dev/hdd /mnt/ddrive:
 monte un disque dur d comme un système de fichiers MSDOS et
l'appelle ddrive dans le répertoire /mnt
 mount -t vfat /dev/hdd /mnt/ddrive:
 monte un disque dur d comme un système de fichiers WIN95 et
l'appelle ddrive dans le répertoire /mnt
 umount /mnt/cdrom:
 démonte le CDROM
W.IBRIHICH
14

ls liste les fichiers dans le répertoire courant


mkdir permet de créer un répertoire
cd permet de changer de répertoire
rmdir permet d'effacer un répertoire
rm permet d'effacer un fichier
cp permet de copier un fichier
mv permet de renommer un fichier
pwd permet de connaître le répertoire courant
./ désigne le répertoire courant
attrib commande permettant de modifier les attributs d'un
fichier
chmod +x rend le fichier nomfichier exécutable
W.IBRIHICH
nomficher
15

find / -name fname – cherche à partir du répertoire


print racine un ficher appelé fname
find / -name « *fname* cherche à partir du répertoire
» racine un ficher contenant
fname
grep textstringtofind /dir cherche à partir du répertoire
/dir tous les fichiers contenant
textstringtofind
cat permet de visualiser le contenu
d'un fichier texte
W.IBRIHICH
16

adduser crée un compte pour un nouvel utilisateur


accountname accountname

passwd donne au compte accountname un


accountname nouveau mot de passe

su permet de se faire passer pour le super-


utilisateur (si l'on connaît son mot de passe)

exit stoppe le compte super-utilisateur pour


devenir un utilisateur normal.

W.IBRIHICH
17

ps liste les processus tournant sur une machine

& permet de
parallèle
lancer deux processus en

kill permet de tuer un processus, c'est à dire de


l'arrêter

W.IBRIHICH
18

ping permet de vérifier une connexion réseau


rlogin permet une connexion déportée (ne vous
demande pas un mot de passe) ~.RC pour sortir

telnet permet une connexion déportée


rsh permet une connexion déportée non interactive
(exécuter une seule commande)

rcp copie de fichiers déportés

ftp copie de fichiers déportés

W.IBRIHICH
19

Les fichiers:
Systèmes de fichiers:
 La classification des fichiers;
 La désignation des fichiers;
 La manipulation des répertoires;
 La manipulation des fichiers;
 Manuel de Linux.
Protection des fichiers:
 Droit d’accès aux fichiers;
 Modification des droits d’accès aux fichiers;
 Droit d’accès aux répertoires.
W.IBRIHICH
20

 Dans la présentation de la structure du système de fichiers, nous avons évoqué des


fichiers de type répertoire, ordinaire et spéciaux.
 La syntaxe d’un nom de fichier n’est pas stricte, il est préférable de limiter le nom du
fichier à 14 caractères.
 Le point (.) sert en général à suffixer les noms (exemple essai.c), mais il peut être utiliser
pour cacher un fichier (exemple.profile).
 Certaines commandes s’appliquent à plusieurs fichiers. Il est plus commode de les
désigner par un nom générique en utilisant des caractères spéciaux.
 Les caractères spéciaux et leurs significations:
 * désigne toute chaîne de 0 à n caractères;
 ? Désigne un caractère quelconque;
 […] désigne un caractère quelconque appartenant un cet ensemble.
Exemples:
W.IBRIHICH
Fich.*, essai?, [a-z]fich, [a-z]*
21

 Un fichier est repéré par son nom et sa position dans l’arborescence: son
chemin d’accès (PATHNAME).
 La syntaxe de ce chemin d’accès est très précise et peut être décrite des
deux manières suivantes:
 Le chemin d’accès absolu:
 Composé d’une suite de noms de répertoires séparé par le caractère /,
en commençant par ce caractère qui désigne le répertoire racine.
 La longueur maximale est limitée à 1024 caractères.
Exemple: /home/SIL/exemple
 Le chemin d’accès relatif:
 Tout utilisateur peut de positionner sur n’importe quel répertoire de
l’arborescence, qui devient le répertoire courant (de travail).
W.IBRIHICH
22

Exemple:
Chemin absolu: /home/SIL/exemple/double
Répertoire courant: /home/SIL
Chemin relatif: /exemple/double
Remarque:
Tout répertoire contient au moins deux entrées:
« . » représente le répertoire lui-même;
« .. » représente répertoire père.

W.IBRIHICH
23

Grep: recherche dans des fichiers toutes les lignes contenants une chaîne de
caractères.
Exemple: recherche la chaîne de caractères beau dans le fichier premiertexte
SIL@Linux>grep beau premiertexte
Wc: permet le dénombrement des mots, lignes et caractères dans un fichier.
Touch: permet de créer un fichier vide.
Echo: affiche à l’écran le texte qui suit la commande.
More: permet d’afficher page par page.
cp [source] [destination]: Copier des fichiers.
mv [source] [destination]: Renommer/Déplacer des fichiers.
rm [fichier]: Supprimer des fichiers.
W.IBRIHICH
24

 La commande MAN permet de rechercher des informations


sur les commandes de Linux.
 Ces informations se trouvent dans deux répertoires et leurs
sous-répertoires:
 / usr/share/man;
 /usr/local/man.

W.IBRIHICH
25

 Comme tout système multi-utilisateur, Linux possède des


mécanismes permettant au propriétaire d’un fichier d’en
protéger le contenu.
 Pour permettre le partage de fichier et faciliter le travail en
équipe, Linux définit la notion du groupe d’utilisateurs, et tout
utilisateur appartient à un groupe au moins.
 Les droits d’accès à un fichier sont définis par son propriétaire.
 A chaque fichier est associé un ensemble d’indicateurs
précisant les droits d’accès au fichier.
 Pour chaque fichier, il existe trois types d’utilisateurs:
 Le propriétaire du fichier,
 Les membres du groupe du propriétaire du fichier,
 Les autres utilisateurs du système.

W.IBRIHICH
26

Pour chaque fichier et par type d’utilisateur il existe trois modes principaux:
 Autorisation d’écriture: (w) write
 Autorisation de lecture: (r) read
 Autorisation d’exécution: (x) execute
Sous Linux il existe différents types de fichiers:
 Fichier ordinaire (-)
 Fichier répertoire (d)
 Fichier spécial en mode caractère (c)
 Fichier spécial en mode bloc (b)
 Tube nommé (p)
 Lien symbolique (l)
W.IBRIHICH
 Socket (s)
27

Ainsi à chaque fichier sont associés 10 attributs:


1 pour désigner le type,
9 pour la protection, 3 pour le propriétaire, 3 pour le groupe et 3 pour
les autres.
L’ensemble des renseignements sur un fichier est obtenu en
utilisant la commande « ls -l ».

W.IBRIHICH
28

% pwd
/home/SIL
% ls -l
-rw-r----- 1 SIL Students 362514 fev 5 12:40 Cours.tex
-rwxrw-r-- 1 SIL Students 1024 fev 2:10 Examen_Linux.pdf
drw-r--rw- 4 SIL Students 10 Jan 11 15:41 Recherche/
drwxrwxrwx 6 SIL Students 8425 Mar 11 11:38 Tps_Linux/
• Les principales options de la commande ls sont :
• -l : format détaillé;
• -a : liste aussi les fichiers qui commencent par « . »;
• -d : si l’argument est un répertoire, la commande liste seulement
son nom et pas les fichiers qu’il contient;
• -t : affiche en triant par date de dernière modification;
• -g : affiche les informations sur le groupe.
W.IBRIHICH
29

Autorisation d’accès propriétaire Taille du fichier Nom du fichier

drwxrwxrwx 12 SIL Students 8425 fev 5 11:38 Tps_Linux/

Type du fichier Nb de liens groupe date de dernière


modification

Permission des autres


Permission du groupe
Permission du propriétaire
-rwxr-xr-- : fichier ordinaire : lecture, écriture et exécution permise pour le
propriétaire, lecture et exécution pour le groupe et seulement lecture pour les
autres. Il est donc impossible aux membres du groupe et aux autres utilisateurs
W.IBRIHICH

d’écrire dans ce fichier


30

• La protection d’un fichier ne peut être modifier que par le propriétaire


• La commande utilisée est : chmod (Change MODe)
• Il existe deux modes d’utilisation de cette commande :
Par un nombre octal Symbolique

% chmod [nombre octal] fichier % chmod [who]op[permission] fichier

rwx r-x r-- who : est une combinaison de lettre


u = user = propriétaire
111 101 100
g = groupe
o = other = autres
754 a = all = tous = ugo
op : + ajoute un droit d’accès
Représentation binaire
- supprime un droit d’accès
7 = 1x2^2 + 1x2^1 + 1x2^0
= affecte un droit de manière absolue
5 = 1x2^2 + 0x2^1 + 1x2^0
permission : r, w, x
W.IBRIHICH
31

• Exemple :
% ls –l Cours.tex
-rw-r----- 1 SIL profs 362514 Sep 5 12:40 Cours.tex
% chmod 777 Cours.tex
% ls –l Cours.tex
-rwxrwxrwx 1 SIL profs 362514 Sep 5 12:40 Cours.tex
% chmod g-w,o-wx Cours.tex
% ls –l Cours.tex
-rwxr-xr-- 1 SIL profs 362514 Sep 5 12:40 Cours.tex
% chmod go=r Cours.tex
-rwxr--r-- 1 SIL profs 362514 Sep 5 12:40 Cours.tex
 Chmod u-w file : supprime le droit d’écriture au propriétaire;
 Chmod g+r file: ajoute le droit de lecture pour le groupe;
 Chmod ug=x file : accès uniquement en exécution pour le propriétaire et le
groupe, pas de modification pour les autres.
W.IBRIHICH
32

• La protection d’un fichier, le nom du propriétaire et le nom du groupe auquel vous


appartenez sont établis à sa création
• Ces paramètres ne peuvent être modifiés que par son propriétaire
• La commande permettant de définir un masque de protection des Fichiers (et
répertoires) est : umask
• Il existe deux modes d’utilisation de cette commande :
Par un nombre octal Symbolique
% umask [nombre base 8] % umask [who]op[permission]
permission
111 111 111 permanente
111 101 100  754 % umask u=rwx,g=rx,o=r
% umask
000 010 011
023
% umask -S
023 u=rwx, g=rx, o=r
% umask 023
W.IBRIHICH
33

• L’interprétation des droits est différente de celle des fichiers


• Les informations concernant un répertoire est données par la commande :
ls –dl répertoire

• L’interprétation des protections est :


r : autorise la lecture du contenu du répertoire, permet de voir la liste des
fichiers (et sous-répertoires) contenu dans le répertoire.

x : autorise l’accès au répertoire ( à l’aide de la commande cd).

w : autorise la création, la suppression et le changement du nom d’un


élément du répertoire. Cette permission est indépendante de l’accès aux
fichiers du répertoire.
W.IBRIHICH
34

• Exemple :

% ls –dl Tps_Linux/
dr-x------ 1 SIL profs 3625 Sep 5 12:40 Tps_Linux/
% ls –l Tps_Linux/TP1.ps
-rwx------ 1 SIL profs 2514 Sep 2 10:35 TP1.ps

• Seul le propriétaire pourra modifier son fichier TP1.ps


• Mais il ne peut pas le supprimer car le propriétaire du répertoire Tps_Linux
(c-à-d l’utilisateur) n’a pas l’autorisation w (autorisation de création,
suppression, modification du nom d’un élément du répertoire)

W.IBRIHICH
35

• Si vous souhaitez changer votre mot de passe, la commande pour


réaliser cette opération est : passwd ou yppasswd

% yppasswd
Changing NIS password for USER on MACHINE
Old password: --entrez votre mot de passe courant
New password: --entrez votre nouveau mot de passe
Retype new password: --rentrez votre mot de passe
NIS entry has changed on filemon

W.IBRIHICH
36

• Après le login, l’utilisateur accède à un interpréteur de commandes


ou shell;
• Le shell affiche un «prompt» et attend les commandes de
l’utilisateur;
• Il en existe plusieurs avec des fonctionnalités et des interfaces
différentes les uns des autres:
• sh : Bourne Shell (shell standard)
• ksh : Korn Shell
• csh : C Shell
• bash : GNU (Bourne Again Shell)
• Pour savoir quel shell est utilisé, tapez : % echo $SHELL
• La liste des shells autorisés : /etc/shells /bin/bash
W.IBRIHICH
37

• Pour Linux, l’identité d’un utilisateur est celle sous laquelle il se connecte
• La commande whoami vous donne votre identité;

% whoami
SIL
• L’utilisateur appartient également à un ou plusieurs groupes;
• La commande id vous donne votre identité et votre groupe.
% id
uid=5230(SIL) gid=64(Students) groups=64(stuents)

n° de l’utilisateur n° du groupe
W.IBRIHICH utilisateur groupe
38

• Syntaxe:
• ; sépare les commandes
• & lance en tâche de fond
• || séparateur conditionnel, si échoue
• && séparateur conditionnel, si succès

• commande1; commande2 : exécute commande1, puis commande2;


• commande1 & commande 2: le système lance commande1 et redonne
immédiatement la main à l’utilisateur pour d’autres travaux;
• commande1 || commande2 : exécute commande1, si le code de
retour est mauvais alors il exécute commande2;
• commande1 && commande2 : exécute commande1, si le code de
retour est bon alors il exécute commande2.
W.IBRIHICH
39

• On peut lancer des commandes qui ne possèdent pas un exécutable du


même nom en créant un alias avec la commande alias du shell
alias nom_alias=‘commandes’
% alias ll=‘ls –l’
% ll
-rw-r----- 1 salah profs 362514 Sep 11 12:40 Cours.tex
drw-r--rw- 4 salah profs 10 Jan 10 15:41 Recherche/

• La liste des alias peut être obtenu par la commande : alias


% alias
b=‘/bin’
ll=‘ls –l’
rm=‘rm –i‘

• On peut enlever un alias en utilisant la commande : unalias



W.IBRIHICH
unalias nom_alias
40

• La commande find parcourt les répertoires et leurs sous-répertoires


de manière récursive à la recherche de fichiers;
• La syntaxe de cette commande est :
find répertoire(s) critère_de_sélection option(s)
• Un répertoire ne peut être parcouru que si l’utilisateur dispose des
droits de lecture et d’exécution sur ce répertoire ou sous-répertoire.
• Options de sélection des fichiers et répertoires :
• -print : affiche le chemin d’accès pour chaque fichier trouvé
• -name : recherche par nom de fichier
• -type : recherche par type de fichier
• -user : recherche par propriétaire
• -size : recherche par taille du fichier
• -atime, -amin : recherche par date de dernier accès (jour, minute)
• -mtime, -mmin : recherche par date de dernière modification (jour, minute)
• -ctime, -cmin : recherche par date de création (jour, minute)
W.IBRIHICH
• -perm : recherche par autorisation d’accès
41

% find . -type d -print


Affiche tous les répertoires contenus dans le répertoire courant
% find . -type f -name ‘’*s*’’ -print
Affiche tous les fichiers contenus dans le répertoire courant et dont
le nom contient la lettre s
% find . -type f -size +200k -print
Affiche tous les fichiers de plus de 200 Ko
% find . -mtime -3 -print
Affiche tous les fichiers dont la date de la dernière modification
remonte à moins de trois jours
% find /home/TP_Linux -type d -perm 755 -print
Affiche tous les sous-répertoires du répertoire /TP_Linux ayant comme
autorisations d’accès rwxr-xr-x
W.IBRIHICH
42

• La commande grep permet de rechercher, dans un ou plusieurs


fichiers, toutes les lignes qui contiennent une chaîne de caractères
donnée
• La syntaxe : grep option(s) expression fichier(s)
• Les options :
• -n : fait précéder chaque ligne affichée par son numéro de ligne dans le
fichier source;
-v : affiche toutes les lignes sauf celles contenant expression;
• -l : n’affiche que les noms des fichiers dont au moins une ligne satisfait
à la recherche;
• -i : ne fait aucune distinction entre les majuscules et les minuscules;
• -c : affiche le nombre de lignes qui contiennent l’expression.

W.IBRIHICH
43

% grep read programme.c


Affiche toutes les lignes du fichier programme.c contenant read

% grep -n read programme.c


Affiche avec la numérotation toutes les lignes du fichier programme.c
contenant read

% grep -i ‘else do’ programme.c


Affiche toutes les lignes du fichier programme.c contenant la chaîne de
caractères ‘else do’ en majuscules ou minuscules

% grep -l read *
Recherche tous les fichiers contenant le mot read et affiche leurs noms
W.IBRIHICH
44

• Pour demander l’impression d’un fichier (le placer dans une file
d’attente), nous utilisons la commande :
lpr –Pnom_imprimante fichier
• L’impression d’un fichier sous Linux passe par un spooler d’impression
• Le spooler est réalisé par un processus système qui s’exécute en tâche
de fond
• Pour connaître l’état de la file d’attente associée à l’imprimante :
lpq -Pnom_imprimante
• Pour retirer un fichier en attente d’impression, nous disposons de
la commande :
lprm -Pnom_imprimante numéro_job
Le numéro_job spécifie le numéro de job, il est obtenu grâce à la
commande lpq
W.IBRIHICH
45

Concept de processus

W.IBRIHICH
46

• Un processus est un programme en cours d’exécution


• Le processeur traite une tâche à la fois, s’interrompe et passe à la
suivante
• Le diagramme d’état du processus:
Prêt
processeur
alloué
admit
interruption
en sortie
terminé
exécution
Nouveau occurrence d’un
événement

en attente
d’un événement
W.IBRIHICH
Bloqué
47

• Les processus des utilisateurs sont lancés par un interprète de commande


(shell). Ils peuvent eux même lancer ensuite d’autres processus
• Ces processus doivent ensuite pouvoir communiquer entre eux:
• Le processus créateur = le père
• Les processus crées = les fils
• Les processus peuvent se structurer sous la forme d’une arborescence:

P1

P2 P3

P4 P5 P6
W.IBRIHICH
48

• Trois possibilités pour l’arrêt d’un processus:


• Normal : par lui même en ayant terminé ses opérations
• Autorisé : par son père qui exécute une commande appropriée
• Anormal : par le système
• temps d’exécution dépassé
• mémoire demandée non disponible
• instruction invalide
• etc.
• Le processus créateur est le seul à pouvoir exécuter l’arrêt de ses fils;

• Dans plusieurs systèmes, la destruction d’un processus père entraîne


la destruction de tous ses fils.

W.IBRIHICH
49

• Pour mettre en oeuvre le modèle des processus, le système


d’exploitation construit une table, appelé table des processus, dont
chaque entrée correspond à un processus particulier

• Chaque entrée comporte des informations sur :


• l’état du processus;
• son compteur ordinal : contient l’adresse de la prochaine instruction
à extraire de la mémoire;
• son pointeur de pile : contient l’adresse courante du sommet de pile
en mémoire ;
• son allocation mémoire;
• l’état de ses fichiers ouverts;
• et tous ce qui peut être sauvegardé lorsqu’un processus passe
de l’état élu à l’état prêt.
W.IBRIHICH
50

• L’environnement d’un processus comprend :


• un numéro d’identification unique appelé PID (Process IDentifier);
• le numéro d’identification de l’utilisateur qui a lancé ce processus,
appelé UID (User IDentifier), et le numéro du groupe auquel
appartient cet utilisateur, appelé GID (Group IDentifier);
• le répertoire courant;
• les fichiers ouverts par ce processus;
• le masque de création de fichier, appelé umask;
• la taille maximale des fichiers que ce processus peut créer, appelé
ulimit
• la priorité;
• les temps d’exécution;
• le terminal de contrôle, c’est à dire le terminal à partir duquel la
commande a été lancée, appelé TTY.
W.IBRIHICH
51

UID = 106 répertoire courant


GID = 104 PID = 36 /usr/c1

fichiers ouverts
0 <- /dev/term/c4
signaux traités cmd1 1 -> /dev/term/c4
2 -> /dev/term/c4
3 <-> /tmp/toto
umask = 027
ulimit = 2048 /dev/term/c4 priorité = 20
temps = 0.3
Ce processus a le numéro 36. Il a été lancé par l’utilisateur qui a 106 pour UID.
Il est entrain d’exécuter le programme ‘cmd1’. Il a consommé 0.3 seconde,
avec une priorité de 20. Son masque de création est 027. Son terminal de
contrôle est /dev/term/c4. Son répertoire courant est /usr/c1. Il a 4
fichiers ouverts :
0, W.IBRIHICH
1, 2, et 3.
52

• Le PPID est le PID du processus père ;


• Le processus fils hérite de tout l’environnement du processus père, sauf bien
sûr du PID, du PPID et des temps d’exécution;
• Le père du processus 36 est le processus 27, et celui de 27 est le processus 1;
• Seul le fils 36 a ouvert le fichier /tmp/toto.
Père Fils

PID = 27 répertoire PID = 36 répertoire


UID = 106 UID = 106
PPID = 1 courant PPID = 27 courant
GID = 104 GID = 104
/usr/c1 /usr/c1

fichiers ouverts fichiers ouverts


signaux 0 <- /dev/term/c4 signaux
traités ksh traités cmd1 0 <- /dev/term/c4
1 -> /dev/term/c4 1 -> /dev/term/c4
2 -> /dev/term/c4 2 -> /dev/term/c4
umask = 027 umask = 027 3 <-> /tmp/toto
ulimit = 2048 ulimit = 2048

/dev/term/c4 priorité = 20 /dev/term/c4 priorité = 20


W.IBRIHICH temps = 0.1 temps = 0.3
53

• Un processus est un programme qui est en cours d’exécution;


• La commande ps donne un ensemble de renseignements sur les
processus en court d’exécution;
• Syntaxe : ps options
• Options :
• -a : affiche des renseignement sur tous les processus attachés à
un terminal;
• -l : donne, pour chaque processus, le nom de l’utilisateur (user), le
pourcentage de cpu (%cpu), la taille totale du processus dans la
mémoire (size), la mémoire réservée (rss) en Ko …;
• -x : affiche également des informations sur les processus non liés au
terminal;
• -w : affiche sur 132 colonnes, utile pour voir le nom complet de la
commande associée à chaque processus.
W.IBRIHICH
54

% ps
PID TTY STAT TIME CMD
746 pts/3 S 00:00:00 -bash
749 pts/3 S 00:00:02 gs
848 pts/3 S 00:03:28 mozilla-bin
965 pts/3 S 00:00:00 ps
• PID : le numéro d’identification du processus;
• TTY : le terminal depuis lequel le processus a été lancé;
• STAT : l’état du processus au moment du lancement de la commande
• R : le processus est en cours d’exécution
• T : le processus est stoppé
• S : le processus dort depuis moins de 20 secondes
• Z : le processus en attente d’un message du noyau
• TIME : le temps d ’exécution de la commande;
• W.IBRIHICH
CMD : le libellé de la commande lancée.
55

• La commande kill permet d’envoyer un signal au processus


• Syntaxes :
kill -signal pid
kill -l
• Options :
• -9 : demande l’arrêt du processus désigné par son pid
• -l : affiche la liste des signaux disponibles

• % kill -l
1) HUP 2) INT 3) QUIT …
7) EMT 8) FPE 9) KILL …

• % kill -9 1635
Cette commande tue le processus dont le numéro PID est 1635
W.IBRIHICH
56

Compression et décompression
des fichiers

W.IBRIHICH
57

• Cette commande permet d’archiver des fichiers ou une arborescence


de fichiers, c-à-d de les regrouper dans un seul fichier

• Pour créer une nouvelle archive :


tar -cvf nom_archive.tar répertoire

• Pour afficher le contenu d’une archive :


tar -tvf nom_archive.tar

• Pour extraire les fichiers archivés :


tar -xvf nom_archive.tar
Les fichiers sont créés à partir du répertoire courant
W.IBRIHICH
58

• compress permet de compresser un ou plusieurs fichiers en remplaçant


chacun par un fichier de même nom, mais avec une extension .Z
compress options fichiers (Chaque fichier est compressé séparément)
• Options :
• -d : décompresse au lieu de compresser, identique à uncompress
• -f : force la génération du fichiers de sortie, même s’il en existe déjà un
• -r : si un des fichiers spécifiés est un répertoire, compresse son contenu
récursivement

W.IBRIHICH
59

• uncompress décompresse les fichiers compressés dont les noms se


terminent par .Z
uncompress options fichiers (prend en compte les mêmes options sauf -r)

% compress fichier1 fichier2 fichier3


% ls
fichier1.Z fichier2.Z fichier3.Z
% uncompress fichier1.Z fichier2.Z
fichier1 fichier2 fichier3.Z

W.IBRIHICH
60

• gzip permet de compresser un ou plusieurs fichiers en remplaçant


chacun par un fichier de même nom, mais avec une extension .gz
gzip options fichiers
• Options :
• -d : décompresse au lieu de compresser, identique à gunzip
• -f : force la génération du fichiers de sortie, même s’il en existe déjà un
• -r : si un des fichiers spécifiés est un répertoire, compresse son contenu
récursivement
• -v : affiche le nom et la réduction de taille en pourcentage de chaque fichier

W.IBRIHICH
61

• gunzip décompresse les fichiers compressés dont les noms se terminent


par .gz
gunzip options fichiers

% gzip fichier1 fichier2 fichier3


% ls
fichier1.gz fichier2.gz
fichier3.gz
% gunzip fichier1.gz fichier2.gz
fichier1 fichier2 fichier3.gz

W.IBRIHICH
62

Utilisation du réseau

W.IBRIHICH
63

• who liste les noms des utilisateurs actuellement connectés, leur


terminal, la machine utilisée et l’heure à laquelle ils se sont connectés

% who
and7483 ttyp0 cis450 Oct 28 09:38
del4820 ttyp1 cis324 Oct 28 09:50
elkh3481 ttyp2 cis128 Oct 28 10:02

W.IBRIHICH
64

• finger affiche des données sur un ou plusieurs utilisateurs


finger options utilisateurs

Chaque utilisateur peut être spécifié par son login, prénom ou nom de
famille
• Options :
• -l : format long
• -s : format court

W.IBRIHICH
65

• Les réseaux relient les ordinateurs pour que différents systèmes


partagent rapidement et facilement des informations

• Le réseau permet le partage des ressources : matérielles,


logicielles, données
• imprimantes, espace disque, périphériques coûteux

• Les systèmes Linux permettent de tester quels systèmes sont


lancés, d’accéder aux fichiers présents sur les systèmes distants, de
communiquer par courrier électronique, etc.

• Plusieurs applications réseau :


• transfert de fichiers : ftp, tftp, rcp, scp
• connexion sur un ordinateur distant : telnet, rlogin, rsh, ssh
• courrier électronique : mail, talk
W.IBRIHICH
• etc.
66

• Cette commande permet de transférer des fichiers vers et à partir


d’une machine distante
ftp nom_machine
• Le champ nom_machine est une adresse Internet :
• absolu 131.184.96.542
• symbolique cis149.univ-st-etienne.fr

% ftp cis149.univ-st-etienne.fr
Connected to 131.184.96.542
Name: votre_login
Passwd:
Connected.
ftp>
W.IBRIHICH
67

• La connexion se fait par la commande : telnet nom_machine


• Lorsque la connexion est établie, l’utilisateur s’identifie sur la machine
distante et entre en session sur cette machine
% telnet cis149.univ-st-etienne.fr
Trying …
Connected to cis149.univ-st-etienne.fr
Name: votre_login
Passwd:
Last login: wed Mar 3 16 …
<cis149> % logout
Goodby …
Connection closed.
%
• Si votre machine est connecté à Internet, il est très imprudent d’utiliser
telnet : le mot de passe est transféré en clair sur le réseau
W.IBRIHICH
• Il est donc préférable d’utiliser ssh
68

Les éditeurs de texte

W.IBRIHICH
69

• vi est un éditeur entièrement en mode texte : chacune des commandes


se fait à l’aide de commandes texte

• vi est peu pratique, très puissant, très utile en cas de non


fonctionnement de l’interface graphique

• Quand vi devient actif :


• un ~ apparaît à gauche de chaque ligne de l’écran,
• vi est alors en mode commande et attend votre première instruction

W.IBRIHICH
70

• vi possède 2 modes :
• mode commande : permet de taper des commandes
• mode insertion : permet de saisir du texte en ajoutant du texte après ou
avant le curseur

• Pour passer du mode commande en mode insertion, tapez :


• a pour insérer du texte après le curseur
• i pour insérer du texte avant le curseur

W.IBRIHICH
71

• Lancer vi en tapant vi
• Un écran comportant une colonne remplie de tildes s’affiche
• Passer du mode commande en mode insertion en appuyant sur la touche a
(n’appuyer pas sur Entrée)
• Vous pouvez insérer des caractères sur la première ligne. Le caractère a
n’apparaîtra pas à l’écran
• Ajouter des lignes de texte, vous pouvez utiliser la touche Correction
pour supprimer les erreurs de la ligne en cours
• Passer du mode insertion en mode commande en appuyant sur la
touche Echap
• Enregistrer en tapant : :w nom_du_fichier
• La ligne d’état confirme cet action en affichant :
‘’nom_du_fichier’’ [New File] 4 lines, 46 characters
• Quitter vi en tapant : :q
W.IBRIHICH
72

• Commandes de base :
:q quitte l’éditeur
:q! force l’éditeur à quitter
:wq sauvegarde le document et quitte l’éditeur
:nom_du_fichier sauvegarde le document sous le nom nom_du_fichier

• Commandes d’édition :
x efface le caractère actuellement sous le curseur
dd efface la ligne actuellement sous le curseur
dxd efface x lignes à partir de celle actuellement sous le
curseur
nx efface n caractères à partir du caractère actuellement
sous le curseur
r remplace le caractère actuellement sous le curseur

cw
W.IBRIHICH modifie le mot courant à partir de la position du curseur
cc modifie la ligne entière
73

• emacs est plus qu’un éditeur de texte


• Lorsqu’on lance l’éditeur de texte, emacs charge un mode particulier
suivant les caractéristiques du fichier à éditer

• emacs possède des modes permettant une interface facile avec Linux :
• mode shell : permet de lancer des commandes shells
• mode répertoire : permet de se déplacer dans une arborescence
• mode tar : permet de manipuler une archivage
• mode LaTex : facilite l’édition de fichiers Latex
• mode calendar : permet de gérer un calendrier
• etc.

W.IBRIHICH
74

• emacs dispose de trois entités différentes :


• la frame qui est une fenêtre. Une session emacs peut gérer
plusieurs
fenêtres
• le buffer qui est l’endroit où on manipule un fichier. Une même
frame peut
gérer plusieurs buffer
• le mini-buffer qui est une zone utiliser pour dialoguer avec
l’utilisateur

W.IBRIHICH
75

• Ctr-x puis Ctr-c quitter emacs


• Ctr-x puis Ctr-s sauvegarde sans quitter emacs
• Echap-< aller en début de fichier
• Echap-> aller en fin de fichier
• Ctr-s recherche en avant
• Ctr-r recherche en arrière
• Ctr-g arrêter la recherche en cours

W.IBRIHICH
76

La programmation Shell

W.IBRIHICH
77

 Le premier Script;
 Lecture et écriture;
 Le passage de paramètres;
 Les variables spéciales;
 Les instructions conditionnelles;
 Les boucles;
 Les fonctions.

W.IBRIHICH
78

 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 que invoquer 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 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.

W.IBRIHICH
79

 Comme tout langage de programmation conventionnel, le


Shell 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.

W.IBRIHICH
80

Les fichiers d’initialisation:


 Avant l’interprétation des commandes, c’est-à-dire apparition
du prompt, le Bourne-Shell exécute deux fichiers d’itialisation:
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.

W.IBRIHICH
81

Exemple:

SIL:~>mavariable=Bonjour #assignation
SIL:~>echo $mavariable #référence

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.

W.IBRIHICH
82

 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.

W.IBRIHICH
83

 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.

W.IBRIHICH
84

Exemple1:
#!bin/sh
#fichier ‘’mon_pwd ’’
Echo –n ’’Bonjour $USER’’
Echo ‘’tu es actuellement dans le répertoire $PWD’’
Résultat:
Bonjour SIL … tu es actuellement dans le répertoire /home/SIL
Exemple2:
#!bin/sh
#fichier ‘’mon_pwd ’’
Echo ‘’écrivez votre nom puis votre prenom’’
Read nom prenom
Echo ‘’nom: $nom’’
Echo
W.IBRIHICH
‘’prenom: $prenom’’
85

 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:
SIL@Linux:~>arg_shift 1 2 3 4
123
Après shift …
234
W.IBRIHICH
SIL@Linux:~>
86

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
W.IBRIHICH
87

#/bin/sh
#fichier « var_sp »
Echo $0 a été appele avec $# parametres
Echo qui sont : $*

Exemple:

SIL@Linux:~>var_sp a b c d
Var_sp a été appele avec 4 parametres
Qui sont : a b c d
SIL@Linux:~>

W.IBRIHICH
88

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:

SIL@Linux:~>echo $imprimente
Laser
SIL@Linux:~>
W.IBRIHICH
89

 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 « : ».
W.IBRIHICH
90

 PS1: Valeur du premier prompt (par défaut pour cet


interpréteur de commandes:$).
 PS2: Valeur du deuxième prompt (par défaut >).
 TERM: Définition du type de terminal utilisé (les terminaux
connus sur un système sont décrits dans le fichier
/etc/termcap ou bien /usr/lib/terminfo). Voici quelques
noms de terminaux:
 Vt100 pour les terminaux compatibles avec ce type,
 Xterm de terminal X,
 Hp poste de travail HP.

W.IBRIHICH
91

Pour la programmation des actions conditionnelles, nous disposons de trois


outils:
 L’instruction if;
 La commande test qui la complète;
 L’instruction case.
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 …. If
Les commandes 1 ne sont exécutées que si la condition renvoie un code
retour nul ($?=0).

W.IBRIHICH
92

If condition 1
Then commandes 1
Elif condition 2
Then commandes 2
……
Elif condition (n-1)
Then commandes (n-1)
Else
Commandes n
fi
Exemple:
If grep –i ‘’SIL’’ /etc/passwd
Then echo l\utilisateur SIL est connu du système
Else
Echo l\utilisateur SIL n\est pas connu du système
fi
W.IBRIHICH
93

 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 ce peut être une
proposition.
 Cette commande existe sous deux syntaxes différentes:
 Test expression
 [expression]
 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 ( ce 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 ».

W.IBRIHICH
94

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 à (sgne « <»);
 -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.
W.IBRIHICH
95

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.

W.IBRIHICH
96

 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
« | ».

W.IBRIHICH
97

Case chaine in
Motif 1) commandes 1;;
Motifs 2) commandes 2;;
*) commandes 3;;
Esac

Exemple:
Case $# in
0) echo $0 a 0 argument;;
1) Echo $0 a 1 argument;;
2) Echo $0 a 2 argument;;
3) *) echo $0 a plus de 2 argument;;
esac

W.IBRIHICH
98

 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.

W.IBRIHICH
99

While condition
Do commandes
done

Until condition
Do commandes
done

For var in liste


Do commandes
done

W.IBRIHICH
100

 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]

W.IBRIHICH
101

 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.

W.IBRIHICH
102

#/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
}

W.IBRIHICH

Vous aimerez peut-être aussi