Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
M1 EEAS Systeme d’exploitation GNU/Linux UPS
Systeme d’exploitation GNU/Linux
Plan du cours:
➽ I-Introduction
➽ II-Systeme de fichiers
➽ III-Processus
➽ IV-Langage de Shell
➽ V-Complements sur les commandes
Jean-Michel ENJALBERT - [email protected], 2005/2006 –1–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-Introduction
I-1 Roles d’un Systeme d’Exploitation
S.E.= ensemble d’outils logiciels permettant de gerer le fonctionnement d’un
ordinateur.
– fournit une interface entre les programmes utilisateurs et le materiel
– assure la gestion des ressources du systeme (processeur, memoire, clavier,
ecran, disques, imprimantes, etc..).
On distingue:
– le programme qui gere les ressources du systeme et les processus (le noyau)
– les outils logiciels associes au SE (compilateur, editeur de texte, commandes,
etc...).
Jean-Michel ENJALBERT - [email protected], 2005/2006 –2–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
Materiel
Noyau
Outils
Applications
Un systeme d’exploitation doit concilier:
– utilisation optimale des ressources (processeur, memoire, ...)
– facilite d’utilisation pour l’utilisateur
Jean-Michel ENJALBERT - [email protected], 2005/2006 –3–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-2 Concepts de base des SE
premiers ordinateurs (annees 50) ➯ une seule personne: programmeur et
operateur.
Ordinateurlecteur decartes
perforatrice
imprimante
sous utilisation des machines (tres couteuses) ➯ separation des taches de
programmation et d’utilisation.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –4–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
Apparition des bandes magnetiques: programme residant en memoire charge
d’enchaıner les taches: le moniteur.
Ordinateur
lecteur decartes
perforatrice
imprimante
lecteur/enreg.bandes
Notion de traitement par lots.
chargementbandes
Programmeurtravaux
Operateur moniteur UC
resultatsexecution
Inconvenient: separation du programmeur/utilisateur et de la machine.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –5–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
Evolution de la technique: decalage entre lenteur des entrees/sorties et rapidite de
l’unite centrale.
Concept de multi-programmation. Interruption des taches.
Principe: entrelacer les taches demandees au systeme pour ne pas bloquer l’UC
dans l’attente de la fin d’une operation d’E/S.
� �� �
� �� �
� � � � � �
� � � � � �
� � � � � �
� � � � � �P1 P2 P3 P4E/SE/S
P1 P2 P1 P2 P3 P4 P3 P4
Jean-Michel ENJALBERT - [email protected], 2005/2006 –6–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
Amelioration de la puissance des machines: concept de temps partage.
Commutations periodiques des taches.
Rapidite des commutations (linux:1ms) ➯ pseudo-parallellisme.
P1 P2 P3
P1 P2 P3 P4 P1 P3 P4P4 P1 P2 P3 P4 P1
P4
fin P1fin P3fin P2
Concepts utilises par tous les systemes d’exploitation modernes.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –7–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-3 Historique: de UNIX a GNU/LINUX
Naissance d’UNIX: 1969 (K. Thomson aux laboratoires Bell)
Objectif: disposer, sur un mini-ordinateur, d’un systeme d’exploitation puissant.
Ecrit quasi entierement en langage C en 1973 par D. Ritchie ➯ “invention” du
langage C.
➯ UNIX portable sur toute machine possedant un compilateur C.
1984, Richard STALLMAN: Creation de la Free Software Foundation (FSF) Projet
de developpement d’un systeme Unix entierement libre (projet GNU).
Developpement d’outils: un compilateur C (gcc), un editeur de texte (emacs), un
debogueur (gdb) etc.. Noyau (nom de code: hurd) en retard.
➯ en 1991, Linus Thorwald: noyau Unix: Linux.
Aujourd’hui (2005), GNU/Linux concurrent des UNIX commerciaux et de
Microsoft/Windows.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –8–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-4 Caracteristiques principales d’UNIX
I-4.1 Multi-plateformes
Ecrit en C ➯ Compilateur C disponible ➯ UNIX disponible.
➯ Systemes embarques (micro-controleurs)
➯ Ordinateurs personnels (PC et MAC)
➯ Stations de travail et serveurs.
I-4.2 Multi-taches
Ordinateur mono-processeur: une chose a la fois.
Multi-taches: utilisation de l’attente d’E/S (lentes) et temps partage: plusieurs taches
“ouvertes”. Pour l’utilisateur, identique a un systeme parallele.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –9–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-4.3 Multi-utilisateurs
UNIX concu pour permettre a plusieurs utilisateurs d’utiliser le meme systeme de
maniere securise
➯ Gestion des fichiers permettant de leur affecter un proprietaire et des droits
d’acces. Notion de groupe permettant de distinguer differentes categories
d’utilisateur.
➯ Multi-taches. Utilisation du systeme par plusieurs utilisateurs en meme temps
Chaque utilisateur execute ses taches sans perturber les taches des autres.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –10–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-4.4 Systeme de fichiers hierarchise
“en UNIX, tout est fichier”
➯ Fichier UNIX: chaıne de caracteres non structuree
➯ A tout fichier est associe un bloc d’informations (i-node) decrivant ses proprietes
identifie par un index unique.
➯ Designation d’un fichier fait par des fichiers particuliers: les repertoires. Un
repertoire est un fichier forme d’un ensemble de couples: (index, nom de fichier)
➯ Racine du systeme: repertoire sans nom d’index 2.
Contient des fichiers non-repertoires et/ou des repertoires L’ensemble forme
une arborescence dont les feuilles sont des fichiers non-repertoires ou des
repertoires vides.
➯ Peripheriques (clavier, souris, disques, etc...) sous UNIX: fichiers speciaux
integres dans l’arborescence.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –11–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-4.5 Gestion des processus
Processus: ensemble des programmes charges en memoire centrale en execution
ou en attente d’execution.
Geres par le noyau du SE (ordonnancement et allocation des ressources).
Processus initial: init. Cree des processus fils qui eux-meme...
Arborescence unique de processus.
Un processus est caracterise par un numero (ID). Il possede un espace memoire
propre.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –12–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-5 Utilisateur d’un systeme UNIX
I-5.1 Compte utilisateur
➯ cree par administrateur (utilisateur root).
➯ login: nom de l’utilisateur
➯ mot de passe: protection de l’acces
➯ repertoire personnel: repertoire /home/nom login. Fichiers personnels.
I-5.2 Processus de login
➯ Au demarrage du systeme, lancement du processus login: affichage d’un
message et attente de caracteres.
➯ Entree du nom de login et du mot de passe
➯ Verification de l’existence du compte et de la validite du mot de passe, puis
creation d’un processus de shell (interpreteur de commande)
Jean-Michel ENJALBERT - [email protected], 2005/2006 –13–
M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS
I-5.3 Administration du systeme
UNIX: droits limites pour les utilisateurs (sur les fichiers et les processus).
Utilisateur particulier qui possede tous les droits: root. Administrateur du systeme.
➯ Creation de comptes utilisateurs
➯ Configuration du systeme
➯ Acces a tous les fichiers et a tous les processus.
➯ Peut detruire le systeme!
Jean-Michel ENJALBERT - [email protected], 2005/2006 –14–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-Systeme de fichiers
II-1 Differents types de fichiers
Fichier: chaıne de caracteres non structure + i-node.
– Fichiers ordinaires: Inclus fichiers ’textes’ et fichiers binaires.
– Fichiers speciaux: associes a des peripheriques. Ils sont places dans le
repertoire /dev et peuvent etre a acces par bloc ou par caractere.
– Repertoires: Fichiers qui permettent de referencer d’autres fichiers.
Repertoire: ➯ liste de couples (nom fichier, index i-node) qui permet d’acceder
a un fichier a partir de son nom. Deux entrees au moins: (. , son propre index) et
(.., l’index de son repertoire pere).
– Liens: Permet d’acceder a un meme fichier en utilisant des noms differents.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –15–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-2 L’arborescence des fichiers
Le systeme de fichiers UNIX se presente sous la forme d’une arborescence:
home
binmkdir
chmod
jme
/
projet.c
projet
Chemin absolu: chemin unique partant de la racine permettant de designer un
fichier donne.
Exemple sur la figure: /home/jme/projet.
Chemin relatif: chemin faisant reference a un repertoire de travail.
Exemple: a partir du repertoire /bin: ../home/jme/projet
Jean-Michel ENJALBERT - [email protected], 2005/2006 –16–
M1 EEAS Systeme de fichiers GNU/Linux UPS
Exemple d’arborescence
.,2bin,3home,4
.,3
..,2mkdir,5chmod,6
.,4
..,2jme,7
.,7
..,4projet,8projet.c,9
.,8
..,7
mkdirchmod
/ bin
homejme
projet
projet.c
Jean-Michel ENJALBERT - [email protected], 2005/2006 –17–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-3 Commandes de base
➯ pwd: affiche le chemin abolu du repertoire de travail.
➯ cd permet de se deplacer (c’est a dire de changer la valeur du repertoire de
travail) dans l’arborescence.
– Sans argument, fixe le repertoire de travail comme etant le repertoire
personnel de l’utilisateur.
– L’argument de cd peut etre un chemin absolu ou un chemin relatif.
– Le fichier .., qui fait reference au repertoire pere, permet de remonter dans
l’arborescence.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –18–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-4 Unites logiques
Unites logiques = unites de stockage (locales ou distantes): disque dur, lecteur de
disquettes, lecteur de CD, etc...
➯ Chaque unite contient sa propre arborescence de fichiers.
➯ Ces unites logiques sont accessibles a partir de l’arborescence generale du
systeme a condition d’etre rattache a cette arborescence. C’est ce que l’on
appelle le ”montage”.
➯ Chaque unite peut etre place a n’importe quel endroit de l’arborescence.
➯ La commande mount permet d’effectuer ce montage. Elle est associee a la
commande umount qui permet le demontage. Les unites logiques
”montables” doivent etre decrites dans le fichier /etc/fstab.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –19–
M1 EEAS Systeme de fichiers GNU/Linux UPS
Exemple de montage
mkdir
chmod
jme
projet.c
projethome
bin/
mnt
/
bin
data
src
bin
data
src
Arbre systeme Arbre unite logique
Montage au point /mnt Montage au point /home/jme
mkdir
chmod
jme
projet.c
projethome
bin/
mnt bin
data
src
mkdir
chmod
jme
home
bin/
mnt
Jean-Michel ENJALBERT - [email protected], 2005/2006 –20–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-5 Caracteristiques des fichiers
II-5.1 Descripteur de fichiers
Chaque fichier UNIX est associe a un descripteur (i-node) qui contient:
– un numero unique d’identification
– l’identification de son proprietaire
– un compteur de references a ce fichier
– l’adresse des blocs utilises sur le disque pour ce fichier
– sa taille en octets
– son type: ordinaire, special,...
– la date de sa creation , de sa derniere modification, ...
– les droits d’acces pour les differents utilisateurs
– etc...
Jean-Michel ENJALBERT - [email protected], 2005/2006 –21–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-5.2 les droits d’acces
Les droits d’acces a un fichier peuvent etre donnes soit:
– au seul proprietaire du fichier
– a tous les membres du groupe auquel il appartient
– a tous les autres utilisateurs (non-membres du groupe)
Un utilisateur appartient a un ou plusieurs groupes.
Trois types de droits d’acces:
– droits en lecture: Permet de visualiser le contenu du fichier et d’en effectuer une
copie.
– droits en ecriture: Permet de modifier le contenu du fichier.
– droits d’execution: Permet d’executer le fichier. Pour un repertoire, permet de le
”traverser” c’est a dire de se deplacer a l’interieur.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –22–
M1 EEAS Systeme de fichiers GNU/Linux UPS
Representation des type et droits d’acces d’un fichier:
➯ chaıne de 10 caracteres du type:
drwxrwxrwx
Premier caractere:
➯ - pour un fichier ordinaire
➯ d pour un repertoire
➯ l pour un lien
➯ b ou c pour un fichier special.
3 groupes de 3 caracteres: droits pour: proprietaire, groupe, autres (dans l’ordre).
➯ - absence de droits,
➯ r droits en lecture
➯ w droits en ecriture
➯ x droits en execution.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –23–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6 Commandes sur les fichiers
Une commande UNIX se presente sous la forme generale:
commande -options arguments
Les options comme les arguments peuvent etre omis suivant la commande
concernee. Chaque argument doit etre separe par un espace.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –24–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.1 Liste de fichiers
La commande ls permet d’afficher la liste des fichiers contenu dans un
repertoire.Principales options:
-l pour un affichage detaille (long)
-a pour afficher les fichiers caches (commencant par un .)
Exemple: ls -ltotal 982
-rw-r--r-- 1 enjalber rst 62107 Sep 12 13:44 7296_data.pdf
drwxr-xr-x 2 enjalber rst 1024 Jul 20 09:12 C167/
drwxr-xr-x 2 enjalber rst 512 Jul 18 08:56 Desktop/
drwx------ 2 enjalber rst 512 Sep 6 11:14 PERSO/
drwxrwx--- 9 enjalber rst 512 Jul 21 09:54 Topo/
drwx------ 15 enjalber rst 1024 Jul 20 13:15 UPS/
drwxr-x--- 2 enjalber rst 512 Jul 20 08:16 UTILS/
-rw-r--r-- 1 enjalber rst 40960 Aug 31 05:16 automate2.tar
drwx------ 2 enjalber rst 512 Sep 8 16:41 mail/
drwx------ 5 enjalber rst 1536 Jul 20 10:00 nsmail/
Sans argument, ls affiche la liste des fichiers du repertoire courant.
Sinon affiche le contenu du repertoire donne en argument,
Jean-Michel ENJALBERT - [email protected], 2005/2006 –25–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.2 Modification des droits d’acces: chmod
Syntaxe: chmod [ugoa][+-][rwx] nom fichier
➯ u user: le proprietaire du fichier
➯ g group: les membres du groupe
➯ o others: les autres (non-membres du groupe)
➯ a all: Tout le monde
➯ + Donne le droit d’acces
➯ - Supprime le droit d’acces
➯ r read: acces en lecture
➯ w write: acces en ecriture
➯ x : acces en execution
Remarque: Un utilisateur ne peut modifier que les droits des fichiers qui lui
appartiennent (excepte root).
Jean-Michel ENJALBERT - [email protected], 2005/2006 –26–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.3 Caracteres generiques
Parmi les caracteres speciaux reserves, les caracteres? et *, appeles aussi
caracteres generiques permettent de selectionner un sous-ensemble de fichiers
(pour l’affichage de leur liste par exemple).
? remplace un et un seul caractere.
* remplace une chaıne de caracteres de longueur quelconque.
Exemples:
ls *.c affiche uniquement la liste de tous les fichiers d’extension .c.
ls a?? affiche la liste de tous les fichiers dont le nom contient 3 lettres et
commence par a.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –27–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.4 Commandes de manipulation des fichiers
– Copie de fichiers: cp
Syntaxe: cp origine destination ou origine est le nom d’un
fichier et destination le nom d’un fichier ou d’un repertoire (nom absolu
ou relatif)
– Deplacement de fichiers mv
Syntaxe: mv origine destination. Le deplacement est un
changement de nom.
– Suppression de fichiers rm
Syntaxe: rm fichiers
Attention, sous UNIX il n’est pas possible de recuperer un fichier supprime.
On peut utiliser les caracteres generiques? et *.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –28–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.5 Commandes de visualisation
Les fichiers ordinaires de type texte peuvent etre visualises par differentes
commandes UNIX:
– cat
Affiche a l’ecran le contenu du fichier.
– more
Comme cat mais l’affichage se fait page par page.
– head
Affiche les premieres lignes d’un fichier.
– tail
Affiche les dernieres lignes d’un fichier.
La commande wc permet d’afficher le nombre de lignes, de mots et de caracteres
d’un fichier (dans cet ordre).
Jean-Michel ENJALBERT - [email protected], 2005/2006 –29–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.6 Commandes de manipulation des repertoires
Les commandes mv et cp s’appliquent aussi aux repertoires mais deux
commandes supplementaires permettent de creer et de supprimer un repertoire:
– mkdir
Pour creer un repertoire.
– rmdir
Pour supprimer un repertoire vide.
Pour un repertoire non-vide, il faut utiliser la commande:
rm -r nom repertoire.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –30–
M1 EEAS Systeme de fichiers GNU/Linux UPS
II-6.7 Les liens
Un lien vers un fichier est un pointeur qui permet d’acceder a un fichier en utilisant
un nom different. Creation d’un lien: commande ln.
Syntaxe: ln [-s] fichier lien vers fichier
➯ Lien physique Nouvelle entree dans un repertoire pour un numero d’inode
identique.
➯ Lien symbolique (option -s de la commande)
Fichier special dont le contenu specifie le chemin (absolu ou relatif) conduisant
au fichier pointe.
Si le fichier pointe est supprime, le lien existe toujours mais ne peut plus
fonctionner.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –31–
M1 EEAS Systeme de fichiers GNU/Linux UPS
Illustration
.,61
..,60progV1,62progV2,63prog,63
bin
.,61
..,60progV1,62progV2,63prog,64
bin
(prog−>progV2)
Lien physique:ln progV2 prog
Lien symbolique:ln −s progV2 prog
Jean-Michel ENJALBERT - [email protected], 2005/2006 –32–
M1 EEAS Processus GNU/Linux UPS
III-Processus
III-1 Notion de processus
Un processus peut etre vu comme un programme en cours d’execution.
Il est caracterise par un environnement: registres, pile, segment de donnees.
Programmes(fichiersexecutables)
Processus
Ordonnanceur
MEMOIREDISQUE
CentraleUnite
Lancement
Chaque processus est pris en charge par le noyau du S.E. qui lui attribue les
ressources necessaires: processeur, memoire, ...
Jean-Michel ENJALBERT - [email protected], 2005/2006 –33–
M1 EEAS Processus GNU/Linux UPS
III-2 Etats d’un processus
Dans un systeme multi-taches comme UNIX, un processus peut se trouver dans
differents etats au cours de sa vie:
– En execution
Le processus est execute par le processeur
– Pret
Le processus est pret a etre execute mais il attend que le processeur se libere.
– Suspendu
Le processus est en attente d’une ressource (entree/sortie par exemple)
– Stoppe
Le processus a ete suspendu par un signal externe.
– Zombie
Le processus est termine mais reste reference dans le systeme.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –34–
M1 EEAS Processus GNU/Linux UPS
Graphe de changements d’etats du processus
Terminaison
Stoppe
Suspendu
ExecutionEn
Zombie
Entree/Sortie
Signal
Pret Ordonnancement
Entree/SortieFin
Signal
Creation
Requete
L’ordonnancement est le mecanisme qui permet de decider quel processus doit etre
execute par le processeur a un instant donne.
Lorsqu’un processus se termine, il reste dans l’etat zombie jusqua ce que son
processus pere prenne connaissance de son etat de terminaison.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –35–
M1 EEAS Processus GNU/Linux UPS
III-3 Attributs d’un processus
Durant son existence, un processus est caracterise par:
– son etat
– son identificateur (PID)
– la valeur des registres du processeur
– l’identite de l’utilisateur sous le nom duquel il s’execute
– les informations utilises pour l’ordonnancement: priorite,...
– les informations concernant l’espace d’adressage (code, donnees, pile)
– les informations concernant les entrees/sorties
– ...
Jean-Michel ENJALBERT - [email protected], 2005/2006 –36–
M1 EEAS Processus GNU/Linux UPS
III-4 Liste des processus
La commande ps permet d’afficher des informations sur les processus existants
dans le systeme. Elle possede differentes options. Utilise sans options, elle affiche
la liste des processus fils du terminal (shell) a partir duquel elle a ete lancee.
Exemple:
[jme@tamia AUTOMATE]$ ps
PID TTY TIME CMD
584 pts/0 00:00:00 bash
617 pts/0 00:00:00 simulateur
618 pts/0 00:00:00 ps
Jean-Michel ENJALBERT - [email protected], 2005/2006 –37–
M1 EEAS Processus GNU/Linux UPS
Il existe aussi la commande top qui affiche en interactif des informations sur les
processus en cours et sur leur etat.
36 processes: 33 sleeping, 3 running, 0 zombie, 0 stopped
CPU states: 44.6% user, 1.5% system, 0.0% nice, 53.7% idle
Mem: 38792K av, 37796K used, 996K free, 26320K shrd, 3672K buff
Swap: 66488K av, 3356K used, 63132K free 18592K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
528 root 19 0 3184 3064 964 R 0 33.2 7.8 0:13 X
582 jme 1 0 4160 4160 2984 R 0 3.7 10.7 0:01 konsole
619 jme 4 0 1016 1016 824 R 0 3.7 2.6 0:00 top
1 root 0 0 108 52 44 S 0 0.0 0.1 0:04 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate
336 root 0 0 200 148 108 S 0 0.0 0.3 0:00 syslogd
363 daemon 0 0 316 300 236 S 0 0.0 0.7 0:00 atd
415 root 0 0 80 0 0 SW 0 0.0 0.0 0:00 lpd
464 xfs 0 0 1096 1020 624 S 0 0.0 2.6 0:00 xfs
499 root 0 0 248 0 0 SW 0 0.0 0.0 0:00 login
500 root 0 0 68 0 0 SW 0 0.0 0.0 0:00 mingetty
Jean-Michel ENJALBERT - [email protected], 2005/2006 –38–
M1 EEAS Processus GNU/Linux UPS
III-5 Creation des processus
➯ Duplication du processus courant (appel systeme fork). Le pere cree un fils.
➯ Recouvrement du code executable du fils (appel systeme exec)
bash commande
wait
fork:exec "commande"
Processus pere Processus fils
commande2
1
commande
fork:exec "commande2"
fork:exec "commande1"
bash
A l’initialisation le processus init est lance. Ce processus cree lui-meme des
processus fils. Le resultat est une arborescence de processus.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –39–
M1 EEAS Processus GNU/Linux UPS
III-6 Mode utilisateur et mode noyau
Protection des ressources paratagees (memoire, E/S, ...):
➯ Seuls les processus systemes peuvent y acceder.
Processus utilisateur: doit utiliser des appels systeme.
ProcessusUtilisateur
ProcessusSysteme
requete E/S
requete
E/S
resultat
Exemple: Permet de verifier les droits de l’utilisateur sur un fichier.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –40–
M1 EEAS Processus GNU/Linux UPS
III-7 Communication entre processus
III-7.1 Les signaux
Un processus peut emettre un signal vers un autre processus. Appel systeme:
kill signal PID
III-7.2 Les tubes
Files de caracteres de type FIFO.
Un processus peut ouvrir un tube vers un autre processus et envoyer des donnees.
Processusemetteur
Processusrecepteur
tube de communication
ecriture lecture
Jean-Michel ENJALBERT - [email protected], 2005/2006 –41–
M1 EEAS Processus GNU/Linux UPS
III-7.3 Memoire partagee
➯ Sous UNIX, chaque processus possede sa memoire propre.
➯ Le mecanisme de memoire partagee permet de definir une zone memoire
accessible depuis plusieurs processus.
➯ Une cle permet l’acces a cette zone.
➯ Le processus qui reserve la memoire partagee genere cette cle et la transmet
aux processus avec qui il doit partager cette memoire.
Memoirepropre
Memoire commune
Memoirepropre
Processus 1 Processus 2
lecture/ecriture
Jean-Michel ENJALBERT - [email protected], 2005/2006 –42–
M1 EEAS Processus GNU/Linux UPS
III-7.4 Semaphores
➯ Servent a gerer l’allocation de ressources limitees.
➯ Dans le cas des ressources systemes (entrees/sorties, memoires,
processeur...) c’est le SE qui arbitre entre les differentes demandes (en utilisant
des semaphores!).
➯ Un semaphore est un compteur associe a une ressource.
– Si ce compteur vaut zero, c’est que la ressource est indisponible.
– Un processus qui veut acceder a une ressource ne peut le faire que si la
valeur du semaphore n’est pas nulle.
– Il decremente alors le compteur. A la liberation de la ressource, il incremente
le compteur.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –43–
M1 EEAS Processus GNU/Linux UPS
III-7.5 Files de messages
Les files de messages fonctionnent comme des boıtes aux lettres. Chaque
processus autorise peut mettre un message dans la boıte aux lettres ou en retirer
un.
Processus 1 Processus 2
Processus 3
envoi mess. lecture mess.
boite aux lettres
Jean-Michel ENJALBERT - [email protected], 2005/2006 –44–
M1 EEAS Processus GNU/Linux UPS
III-8 Redirection des Entrees/Sorties
III-8.1 Entree et sortie standards
Creation d’un processus ➯ ouverture de 3 fichiers.
– Entree standard: descripteur 0, clavier.
– Sortie standard: descripteur 1, ecran
– Sortie d’erreurs: descripteur 2, ecran
Redirections et pipeline: Ecran et clavier=fichiers speciaux ➯
– Redirection de la sortie d’un processus vers un fichier
– Redirection d’un fichier vers l’entree d’un processus.
– Redirection de la sortie d’un processus vers l’entree d’un processus.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –45–
M1 EEAS Processus GNU/Linux UPS
III-8.2 Redirection de la sortie
commande > fichier
permet de rediriger la sortie standard vers un fichier
S’il existait precedemment, le fichier est ecrase.
On peut aussi rediriger la sortie vers un fichier existant sans l’ecraser (a la suite) en
ecrivant
commande >> fichier
Un fichier particulier: /dev/null permet d’envoyer la sortie vers le neant...
Jean-Michel ENJALBERT - [email protected], 2005/2006 –46–
M1 EEAS Processus GNU/Linux UPS
III-8.3 Sortie d’erreur
En plus de la sortie standard, un processus peut ecrire sur la sortie erreurs
On peut rediriger cette sortie (l’ecran par defaut) en utilisant la syntaxe:
commande 2> fichier ou commande 2>> fichier
On peut aussi rediriger les deux sorties:
(commande > fichier1) 2> fichier2
qui redirige la sortie standard vers fichier1 et la sortie erreur vers
fichier2.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –47–
M1 EEAS Processus GNU/Linux UPS
III-8.4 Redirection de l’entree
La redirection de l’entree standard se fait en utilisant la syntaxe:
commande < fichier
Le processus vient lire dans le fichier les donnees precedemment rentrees au
clavier.
On peut bien sur rediriger a la fois l’entree et la sortie en ecrivant:
commande < fichier1 > fichier2
La commande prend ses entrees dans fichier1 et met ses sorties dans
fichier2.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –48–
M1 EEAS Processus GNU/Linux UPS
III-8.5 Enchainement de processus
On peut lier deux processus, l’un prenant en entree la sortie de l’autre (on parle de
pipeline):
commande1 | commande2
commande2 prend en entree la sortie de commande1. Ceci est equivalent a:
commande1 > tempo; commande2 < tempo; rm tempo
Remarque: Le caractere; permet d’enchaıner des commandes.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –49–
M1 EEAS Processus GNU/Linux UPS
III-9 Lancement des commandes
Les commandes sont generalement lancees a partir d’un terminal.
Lancement en avant-plan (terminal bloque tant que la commande s’execute):
commande
Lancement en arriere-plan (le terminal reste disponible)
commande &
Remarque: si le processus attend des entrees clavier, il va etre stoppe.
Passage arriere-plan ➯ avant-plan: fg
Passage avant-plan ➯ arriere-plan: bg (il faut d’abord stopper le processus)
Signals envoyes a un processus en avant-plan:
– CTRL-Z: processus stoppe
– CTRL-C: processus supprime.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –50–
M1 EEAS Langage de shell: Bash UPS
IV-Langage de shell
IV-1 Introduction
Shell = Interpreteur de commandes
Analyse et execute des commandes UNIX
Mode interactif: commandes rentrees au clavier dans un terminal. L’analyse de la
commande et son execution commence apres le retour-chariot (caractere CR).
Mode “batch”: la commande est un fichier contenant des commandes UNIX.
L’interpreteur execute ce fichier ligne par ligne.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –51–
M1 EEAS Langage de shell: Bash UPS
IV-2 Interpreteur interactif
L’algorithme que suit un interpreteur de commande en mode interactif peut-etre
decrit ainsi:
1. Ouverture de 3 fichiers: entree standard, sortie standard, sortie d’erreur.
2. Affichage du message d’accueil (prompt).
3. Lecture sur l’entree standard (avec stockage des caracteres dans un buffer)
jusqu’au caractere retour chariot.
4. Interpretation des caracteres speciaux (par exemple “?” et “*”).
5. Recherche de la commande (dans les repertoires listes dans la variable PATH).
6. Lancement de la commande en avant-plan: fork:exec:wait:prompt
ou en arriere-plan: fork:exec:prompt. En arriere plan, on revient
directement en 2. En avant-plan, on attend la fin de la commande (fonction
wait) avant de revenir en 2.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –52–
M1 EEAS Langage de shell: Bash UPS
IV-3 Fichiers de configuration
A la connection au systeme, celui-ci execute un fichier de configuration. Pour bash il
s’agit du fichier: .bash profile.
Remarques:
Le caractere # en debut de ligne indique un commentaire.
Le fichier .bash profile n’est execute qu’a la connection au systeme et pas
lors de l’ouverture d’un nouveau terminal.
.bashrc est lui execute a l’ouverture de chaque nouveau terminal.
On notera la commande alias qui permet de donner un synonyme a une
commande. L’inverse de la commande alias est la commande unalias.
Voici un exemple des fichiers .bash profile et .bashrc:
Jean-Michel ENJALBERT - [email protected], 2005/2006 –53–
M1 EEAS Langage de shell: Bash UPS
# .bash_profile
# Get the aliases and functions
if [ -f ˜/.bashrc ]; then
. ˜/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:.
BASH_ENV=$HOME/.bashrc
USERNAME=""
export USERNAME BASH_ENV PATH
Jean-Michel ENJALBERT - [email protected], 2005/2006 –54–
M1 EEAS Langage de shell: Bash UPS
# .bashrc
# User specific aliases and functions
alias rm="rm -i"
alias mv="mv -i"
alias cp="cp -i"
alias cls="clear"
alias ls="ls --color=auto"
alias ll="ls -l"
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Jean-Michel ENJALBERT - [email protected], 2005/2006 –55–
M1 EEAS Langage de shell: Bash UPS
IV-4 Variables d’environnement
Variables initialisees par le systeme (fichiers d’iniitialisation).
Exemples:
➯ PWD Contient le chemin absolu du repertoire de travail.
➯ HOSTNAME Contient le nom de la machine.
➯ USERNAME Contient le nom de l’utilisateur.
➯ PATH Contient la liste des chemins de recherche des commandes. Chaque
chemin est separee par:. Les repertoires sont explores dans l’ordre de la liste
jusqu’a ce que la commande soit trouvee.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –56–
M1 EEAS Langage de shell: Bash UPS
IV-5 Les scripts-shell
Un script-shell est un fichier texte contenant des commandes UNIX qui vont etre
executees par l’interpreteur de commandes.
On doit le rendre executable (commande chmod).
Il doit commencer par une ligne indiquant l’interpreteur de commandes a utiliser
(Exemple: .#!/bin/bash).
Une commande UNIX a la forme generale suivante: commande -options
arguments ou options et arguments sont des listes de chaınes de
caracteres separes par des blancs. Par exemple: rm -i *.c *.o.
Elle renvoie un code de retour qui vaut zero en cas de succes et une valeur positive
en cas d’ erreur.
Une commande UNIX peut-etre une commande interne au noyau ou une
commande externe.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –57–
M1 EEAS Langage de shell: Bash UPS
IV-5.1 Parametres positionnels
Les parametres positionnels permettent de recuperer les valeurs passees a une
commande (arguments ou options).
On utilise la notation: $x ou x represente le numero du parametre.
$0 represente le nom du fichier script lui-meme.
$# represente le nombre de parametres passes au script.
Exemple: Soit le script-shell essai. Si l’on execute: essai du shell
Les parametres positionnels ont les valeurs suivantes:
parametre valeur
$# 2
$0 essai
$1 du
$2 shell
Jean-Michel ENJALBERT - [email protected], 2005/2006 –58–
M1 EEAS Langage de shell: Bash UPS
IV-5.2 Variables utilisateurs
On peut aussi definir des variables locales dans un script simplement en les
affectant.
A l’interieur d’un script, les valeurs des variables sont accessibles en les prefixant
par le symbole $. Elles peuvent etre rendues accessibles en dehors du script grace
a la commande export.
IV-5.3 Divers
– Les commentaires commencent avec le symbole # et se terminent en fin de
ligne.
– Le separateur de commande est la fin de ligne ou le caractere;
Jean-Michel ENJALBERT - [email protected], 2005/2006 –59–
M1 EEAS Langage de shell: Bash UPS
Exemple de script
La commande: echo permet d’afficher des chaınes de caracteres a l’ecran et
notamment les valeurs des variables.
La commande read permet de lire une variable au clavier.
#!/bin/bash
#
# Exemple de variables utilisateurs
#
VAR1=52 # VAR1 = la chaine ’52’
VAR2=VAR1 # VAR2 = la chaine ’VAR1’ !
VAR3=$VAR1 # VAR3 = la valeur de VAR1 soit la chaine ’52’
VAR4=$((VAR1+1)) # VAR4 = la chaine: ’53’
echo $VAR1 $VAR2 $VAR3 $VAR4 # Affiche: 52 VAR1 52 53
echo "Votre reponse?"
read REP
echo "vous avez repondu: $REP"
Jean-Michel ENJALBERT - [email protected], 2005/2006 –60–
M1 EEAS Langage de shell: Bash UPS
IV-5.4 La commande test
La commande test permet de realiser des comparaisons. On peut ecrire: test
comparaisons ou [ comparaisons ] (espaces obligatoires!).
Quelques operateurs de comparaison:
Sur les chaınes de caracteres:
test v1 = v2 (egalite de chaınes de caracteres)
test v1!= v2 (non-egalite de chaınes de caracteres)
Sur les expressions arithmetiques:
test v1 -eq v2 (egalite de valeurs entieres)
test v1 -ne v2 (non-egalite de valeurs entieres)
Pour les expressions arithmetiques, les operateurs de comparaison suivants
peuvent etre utilises: -eq, -ne, -lt, -le, -gt, -ge.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –61–
M1 EEAS Langage de shell: Bash UPS
Sur les fichiers: (tirees du manuel de bash):
-a file True if file exists.
-b file True if file exists and is a block special file.
-c file True if file exists and is a character special file.
-d file True if file exists and is a directory.
-r file True if file exists and is readable.
-s file True if file exists and has a size greater than zero.
-w file True if file exists and is writable.
-x file True if file exists and is executable.
-O file True if file exists and is owned by the effective user id.
-G file True if file exists and is owned by the effective group id.
Exemple:#!/bin/bash
# teste si le parametre passe en ligne de commande est un repertoire
#
if test -d $1 ; then
echo $1 est un repertoire
else
echo $1 n’est pas un repertoire
fi
Jean-Michel ENJALBERT - [email protected], 2005/2006 –62–
M1 EEAS Langage de shell: Bash UPS
IV-5.5 Evaluation des expressions arithmetiques
L’evaluation arithmetique permet de remplacer une expression par le resultat de son
evaluation. Il existe deux formes (equivalentes) d’evaluation arithmetique:
$[expression]
$((expression))
Les operateurs sont les memes que ceux du langage C: +, -, *, /, >>,
<<, etc...
Par exemple, le script suivant:
#!/bin/bash
x=3
y=5
echo $x+$y $[$x+$y] $(($x*$y))
affiche:
3+5 8 15
Jean-Michel ENJALBERT - [email protected], 2005/2006 –63–
M1 EEAS Langage de shell: Bash UPS
IV-5.6 Structures de controle
if
if <condition1>; then
<commandes1>
elif <condition2>; then
<commandes2>
else
<commandes3>
fi
condition1 et condition2 sont des commandes (test en general).
#!/bin/bash
# lance latex et dvips si l’utilisateur a donne nom en argument
#
if test $# -ne 1; then
echo "erreur de syntaxe"
else
latex $1; dvips -o $1.ps $1.dvi
fi
Jean-Michel ENJALBERT - [email protected], 2005/2006 –64–
M1 EEAS Langage de shell: Bash UPS
for
for <variable> [in <liste_de_cas>]
do
<commandes>
done
([] signifie optionnel)
Exemple:
#!/bin/bash
#
# supprime les droits d’acces en lecture sur les fichiers
# d’extension .c aux utilisateurs autre que le proprietaire
# des fichiers
#
for FICHIER in *.c
do
chmod go-r $FICHIER
done
Jean-Michel ENJALBERT - [email protected], 2005/2006 –65–
M1 EEAS Langage de shell: Bash UPS
Si in ... est omis, liste prend successivement la valeur de chacun des
parametres positionnels.
Exemple:
#!/bin/bash
#
# Calcule la moyenne des parametres (entiers) passes en
# ligne de commande
#
SOMME=0
for NOTE
do
SOMME=$((SOMME+NOTE))
done
if [ $# -ne 0 ]; then
echo moyenne:$(($SOMME/$#))
fi
Jean-Michel ENJALBERT - [email protected], 2005/2006 –66–
M1 EEAS Langage de shell: Bash UPS
while
while <condition>
do
<commandes>
done
Execute les commandes tant que condition est vraie.
Exemple:
#!/bin/bash
#
x=0
while test $[$x] -lt 5 # evalue x
do # fait tant que x<5
x=$[$x+2] # incremente x de 2
echo $x # affiche x
done
Jean-Michel ENJALBERT - [email protected], 2005/2006 –67–
M1 EEAS Langage de shell: Bash UPS
until
until <condition>
do
<commandes>
done
Execute les commandes jusqu’a ce que condition soit vraie.
Exemple:
#!/bin/bash
#
# Exemple de boucle ’until’
# boucle jusqu’a ce que l’utilisateur tape ’fin’
#
REP=encore
until [ $REP = "fin" ]
do
echo ?
read REP
done
Jean-Michel ENJALBERT - [email protected], 2005/2006 –68–
M1 EEAS Langage de shell: Bash UPS
case
case <variable> in
<cas1>)
<commande1>
;;
<cas2>)
<commande2>
;;
*)
<commande_defaut>
;;
esac
cas1, cas2 sont des chaınes de caracteres.
Execute la commande pour laquelle il y a correspondance entre variable et
cas. Sinon execute la commande par defaut.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –69–
M1 EEAS Langage de shell: Bash UPS
Exemple:
#!/bin/bash
#
# Calculatrice basique sur les nombres entiers
#
if [ $# -ne 3 ]; then
echo "3 parametres: operande operateur(+,-,/,x) operande"
else
case $2 in
+) echo $[$1+$3]
;;
-) echo $[$1-$3]
;;
x) echo $[$1 * $3]
;;
/) echo $[$1 / $3]
;;
*) echo "operateur inconnu" # traitement par defaut
esac
fi
Jean-Michel ENJALBERT - [email protected], 2005/2006 –70–
M1 EEAS Complements sur les commandes UPS
V-Complements sur les commandesVoici quelques commandes usuelles Unix, certaines sont detaillees par la suite:
➯ man commande affiche l’aide en ligne de la commande
➯ grep motif fichier recherche de chaınes dans un fichier.
➯ find chemin expression recherche de fichiers.
➯ which commande recherche de commandes.
➯ tar options archive fichiers archivage de fichiers.
➯ gzip fichier compression d’un fichier
➯ file fichier affichage du type d’un fichier (ascii, binaire, ...)
➯ du rep affichage de l’espace utilise par l’arborescence specifiee.
➯ touch fichier cree un fichier vide ou met a jour sa date.
➯ diff fichier1 fichier2 affiche les differences entre fichiers texte.
➯ sort fichier tri un fichier texte
Jean-Michel ENJALBERT - [email protected], 2005/2006 –71–
M1 EEAS Complements sur les commandes UPS
V-1 Manuel en ligne: man
La commande man permet d’afficher le manuel en ligne des commandes
disponibles sur le systeme.
Sous sa forme la plus simple sa syntaxe est: man commande.
Exemple: man man.
On peut aussi preciser la section de recherche: man section nom. Ainsi la
section 3 regroupe les fonctions systemes du langage C.
Exemple: man 3 printf
Pour afficher toutes les sections correspondants a une commande, on utilise l’option
-a.
Exemple: man -a time
Jean-Michel ENJALBERT - [email protected], 2005/2006 –72–
M1 EEAS Complements sur les commandes UPS
Exemple: man grep (extraits)
Nom: grep - Afficher les lignes correspondanta un motif donne.
Synopsis:
grep [ -[[AB] ]num ] [ -[chnvx] ] motif [ fichiers... ]
Description:
grep recherche dans les fichiers d’entree indiques les lignes correspondant a un certain motif.
Si aucun fichier n’est fourni, la lecture se fait depuis l’entree standard.
Par defaut, grep affiche les lignes correspondant au motif.
grep accepte les options suivantes :
-num Les correspondances seront affichees avec num lignes supplementaires avant et apres.
-A num Afficher num lignes supplementaires apres la ligne correspondante.
-B num Afficher num lignes supplementaires avant la ligne correspondante.
-c Ne pas afficher les resultats normaux. A la place, afficher un compte des lignes correspondantes pour chaque fichier
d’entree. Avec l’option -v (voir plus bas), afficher les nombres de lignes ne correspondant pas au motif.
-h Ne pas afficher le nom des fichiers dans les resultats lorsque plusieurs fichiers sont parcourus.
-n Ajouter a chaque ligne de sortie un prefixe contenant son numero dans le fichier d’entree.
-v Inverser la mise en correspondance, pour selectionner les lignes ne correspondant pas au motif.
-x Ne selectionner que les correspondances qui occupent une ligne entiere.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –73–
M1 EEAS Complements sur les commandes UPS
V-2 Utilisation de grep
➯ Affichage des lignes contenant la chaine: “1000” de prog.c:
grep 1000 prog.c
➯ Compte des lignes contenant “while”:
grep -c while prog.c
➯ Recherche du PID du processus: emacs
ps | grep emacs
➯ Suppression des lignes contenant “printf” de prog.c et sauvegarde dans
prog2.c:
grep -v printf prog.c > prog2.c
Jean-Michel ENJALBERT - [email protected], 2005/2006 –74–
M1 EEAS Complements sur les commandes UPS
V-3 Recherche de fichiers find
Syntaxe: find chemin expression
Chemin: la recherche s’effectue dans le repertoire dont le chemin est donne en
argument et tous ses sous-repertoires.
Expression: affiche la liste des fichiers pour laquelle expression est vraie.
Exemples d’expressions: -name nom, -size +nk, ...
Exemples:
find /home/jme -name prog.c
Affiche le chemin de tous les fichiers prog.c contenu dans l’arborescence ayant pour
racine /home/jme
find . -size +50k
Affiche tous les fichiers du repertoire courant de taille superieure a 50 Koctets.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –75–
M1 EEAS Complements sur les commandes UPS
V-4 Recherche de commandes: which
Recherche du chemin de l’executable donne en argument. La recherche se fait
dans les repertoires listes dans la variable d’environnement PATH.
Option: -a Affiche toutes les occurences de l’executable.
Exemple:
which bash
/bin/bash
Jean-Michel ENJALBERT - [email protected], 2005/2006 –76–
M1 EEAS Complements sur les commandes UPS
V-5 Archivage: tar
tar permet de concatener des fichiers et des repertoires dans un seul fichier
(fichier archive)
Creation d’une archive:
tar cvf archive.tar fichiers
ou:
tar cvf archive.tar repertoires
Verification de l’archive (affichage de son contenu):
tar tvf archive.tar
Desarchivage (extraction des fichiers):
tar xvf archive.tar
Remarque: les fichiers archives ne sont pas supprimes.
Jean-Michel ENJALBERT - [email protected], 2005/2006 –77–
M1 EEAS Complements sur les commandes UPS
V-6 Compression de fichiers: gzip
Il existe plusieurs utilitaires de compression de fichier. gzip est le plus utilise sous
Linux.
Compression:
gzip fichier : remplace fichier par sa version compressee fichier.gz
Affichage du contenu du fichier compresse:
gzip -l fichier.gz
Decompression:
gzip -d fichier.gz
Jean-Michel ENJALBERT - [email protected], 2005/2006 –78–