Vous êtes sur la page 1sur 71

Système UNIX

Plan du cours

Présentation générale
Bourne Shell
Interface C / Unix
systemesdeproduction.blogspot.com

LAZREK Mohamed Département Informatique


LE SYSTEME UNIX

PRESENTATION
GENERALE
UNIX ?
Est un système d’exploitation

Permet la gestion des


ressources de la machine :
matériels
et
logiciels
LE SYSTEME UNIX Naissance
Naissanced’UNIX
d’UNIX 1969
un peu d'histoire :
Version
Version66 1976

Version
Version77 1979

BSD
BSD4.1
4.1
Version
VersionIII
III 1981

BSD
BSD4.2
4.2
Version
VersionVVRel.
Rel.00 1983

Version Rel.2 1985


VersionVVRel.2
BSD
BSD4.3
4.3
Version
VersionVVRel.
Rel.33 1987
AIX
AIX3.0
3.0

Version
VersionVVRel.4
Rel.4 1991

BSD
BSD4.4
4.4 AIX
AIX3.2
3.2 OSF/1
OSF/1

UNIX LINUX
1995 AIX
AIX4.2
4.2 OSF/DCE
OSF/DCE
Mais la philosophie de l’Unix reste la
même :

Un seul arborescence pour tous les


utilisateurs

Les E/S sur les périphériques sont


identiques aux E/S sur les fichiers
MAIS AU FAIT ...... QUI ES TU ?

• Un système opératoire :

Multi-Utilisateurs
réseau
Multi-tâches
Déroulement de l’exécution d’un programme dans un
système :

mono utilisateur

et

mono tache

P1 P1
Mémoire Processeur
Centrale
Architecture d’un système multi utilisateur
Demande E/S
P1 P4 P1
Processeur
P2
Mémoire
P3 P4 P3 P2 P1 Processeur P4 P2
P4
E/S
Centrale P2 P4
P2

Fin
P1 Quantum
P2
P3
P4 Fin E/S

Fin E/S et du
Programme

Lancer Fin du
l‘exécution Programme
Temps de réponse d’un programme dépend :

 nombre d’utilisateurs connectés


 durée du quantum
 nombre d’opérations d’E/S
 durée des programmes
 ....
MAIS AU FAIT ...... QUI ES TU ?

• Un langage de commande :
 séquentiel
 pseudo parallèle
 abréviations
 re-directions d'entrée-sorties
 synchronisation...
• Une documentation en ligne
• Ma philosophie :
"Keep it simple, and take it easy"
• Mon succés
Toute une génération d'informaticiens a été
éduquée sur UNIX
• Les champs d'application :
- développement de logiciel
- applications industrielles (extensions
temps réel)
- communications (courrier électronique,
transfert de fichier)
Structure du système
Applications
Shell
Noyau
Matériel

Le noyau :
• gère les ressources matérielles (mémoire, unités
d'E/S...), les fichiers, l'allocation de temps UC
• gère les processus
• écrit en C et en assembleur
Le shell :
• est l’interface entre le noyau et l’utilisateur,
• des centaines de commande sont à la disposition des
utilisateurs
Connections des utilisateurs

Shell noyau
Shell
utilisateur x matériel
utilisateur y

Shell

utilisateur z
Documentation

$ man commande

Remarque :
majuscule # minuscule
NOTION D'UTILISATEUR
Tout utilisateur est enregistré dans deux fichiers :
/etc/group
nom de groupe
numéro unique de groupe

/etc/passwd
nom de login
mot de passe crypté
numéro unique d'utilisateur
numéro unique de groupe
nom complet de l'utilisateur
répertoire initial
interpréteur de commande
login : ali
password : *******
avec possibilité de changer le mot de passe:

$ passwd
changing password for ali
old password : ********
new password : ********
retrype new password : *******

La commande who permet de


connaître les utilisateurs connectés
LE SYSTEME DE FICHIERS

• Interface uniforme pour toute opération d'E/S

• Trois types de fichiers :


 fichiers ordinaires
 répertoires
 fichiers spéciaux et périphériques :
terminaux
liens symboliques
prises réseaux
LE SYSTEME DE FICHIERS
Structure arborescente
/

usr etc bin lib home

group passwd enim old

profs
adm etudiant

élève1 élève2 élève3

fich TP1 TP2

Fich1 Fich2 Fich3 Fich4 Fich5


montage d’un volume

/
Volume 2
bin dev usr

local

local bin
Volume 1

readme

Montage du volume 2
Propriétaire et droits d’accès
a- protections
trois catégories utilisateurs :
 son propriétaire
 les utilisateurs qui font partie du même
groupe que le propriétaire
 les autres, excluant le propriétaire et les
usagers du groupe
A chacune de ces trois classes d’utilisateurs,
trois types de droits accès sont définis

Ces types ont des significations différentes s’il


s’agit d’un répertoire ou d’un fichier.
LE SYSTEME DE FICHIERS
Structure arborescente
/

usr etc bin lib home

group passwd enim old

profs
adm etudiant

élève1 élève2 élève3

fich TP1 TP2

Fich1 Fich2 Fich3 Fich4 Fich5


Pour un fichier :
r (read) droit de lire le fichier

w (write) droit de modifier le


contenu du fichier

x (execute) droit d’exécuter


le fichier.
Pour un répertoire :
r (read) droit de lire le répertoire, c a d
droit d’appliquer la commande ls
W (write) droit d’écrire dans le répertoire.
Cela permet
d’ajouter une entrée au répertoire :
de créer un fichier ou un répertoire
de modifier une ligne :
changer le nom d’un fichier
de retirer une ligne : détruire un fichier.
remarque :
ce droit n’autorise pas à détruire le répertoire lui-
même : il faut pour cela avoir le droit w sur le
père de répertoire
x droit de traverser le répertoire.
Exemple :
r - - : chez le père : ls sr

- -x

-wx
b- Changement des protections : chmod

chmod mode [fichier]+


Le paramètre mode peut prendre deux formes :

1- dans la forme absolue, mode est


composé de trois chiffres octaux.
Le codage est :
un chiffre binaire un signifie donner le droit
correspondant
un chiffre binaire zéro signifie retirer le droit
correspondant

Exemple : chmod 300 fichier


chmod mode [fichier]+
2- dans laforme symbolique , mode est composé de deux ou trois
champs collés les uns aux autres, de la façon suivante :
[qui ]* position [droit]+
qui : est l’un des caractères suivants :
u pour le propriétaire
g pour le groupe
o pour les autres et
a pour tous ( user, group, others, all )
et indique pour qui on donne les droits qui suivent (défaut : a );

position : est l’un des caractères suivants :


+ pour mettre un droit
- pour le retirer
= pour mettre un droit et supprimer les autres;
droit : est l’un des caractères suivants :
r pour le droit r,
w pour le w
x pour le droit x.
Exemple : soit un fichier f
Permission avantValeur de mode Permission après
rw_ r_ _ _ _ _ chmod +x f rwx r_x _ _ x

rw_ r_ _ _ _ _ chmod u-w f r_ _r_ _ _ _ _

rw_rw_rw_ chmod a=r f r_ _r_ _ r_ _


Commande qui permet d’ajouter le droit
d’exécution pour le propriétaire du fichier toto
chmod u+x toto
Commande qui permet d’ajouter le droit d’écriture
pour le groupe du fichier toto
chmod g+w toto
Commande qui permet d’ajouter le droit
d’exécution pour les autres et retirer ce droit au
propriétaire et au groupe du fichier toto
chmod o=x toto
Commande qui permet d’ajouter le droit
d’exécution à tous du fichier toto
chmod +x toto
Forme générale d’une commande UNIX

commande [ paramètres ] entrée

Convention :

.. répertoire parent

. répertoire courant

/ racine de l'arborescence
Manipulation de répertoires
cd entrée #home directory
se positionner sur le répertoire personnel
pwd entrée #print working directory
impression du répertoire courant
cd <nom_rep> entrée # change directory
changement de répertoire courant
mkdir <nom_rep> entrée # make directory
création d'un sous- répertoire
rmdir <nom_rep> entrée # remove directory
destruction d'un répertoire si vide
mvdir <nom_rep1> <nom_rep2> entrée
re-nommage de répertoire #move directory
Copie d’un ou de plusieurs fichiers : cp

cp origine résultat

Les droits de résultat sont les droits de origine.

cp [ origine ]+ rep
REP1

a b REP2

nf

REP1 : cp a REP2/nf

REP2 :
cp ../a nf
Déplacement ou renommage : mv
mv ancien nouveau
Exemple : REP1

Avant : a b REP2

REP1

Aprés :
a b REP2

nc

REP1 : mv REP2/c REP2/nc

REP2 : mv c nc
Autre exemple : REP1

Avant : a b REP2

nc

REP1

Aprés :
a autreb REP2

nc

REP1 : mv b REP2/ autreb

REP2 : mv ../b autreb


avant : REP1

a autreb REP2

aprés : nc
REP1

a autreb REP2

nc

REP1 : mv REP2/autreb REP2/nc .

REP2 : mv autreb nc ..
créer des liens sur fichier

ln anciennom nouveaunom

pas de duplication physique du fichier.

ln [fichier]+ rep

G1 à refaire G5 j’ai donné le Mini Projet


REP1

a
REP2
autreb nc

REP1 : ln * REP2/

REP2 : ln ../* .
Destruction d’un fichier ou d’un lien : rm

rm [ option ] [ fichier ]+

Appliquer à un lien symbolique, rm retire le lien


symbolique.
Destruction physique

options :
r (récursif) rm –r sous_rep

i
Attributs d’un fichier, contenu d’un répertoire
ls [option][nom]*
Quelques options :
-a affiche tous les noms de fichiers, même ceux qui commencent par un point
-i affiche le numéro de i-nœud devant chaque nom de fichier ou répertoire.
-l affiche pour chaque fichier successivement :
 la nature du fichier :
- : fichier ordinaire,
d : répertoire,
l : lien symbolique
 les droits d’accès
 le nombre de liens de fichier
 les noms du propriétaire et du groupe
 la taille des fichiers en caractères
 la date de dernière modification
 le nom du fichier
-t affiche trié par la date de dernière modification
REP1

a.c b.c c.o REP2 REP3

d.c e.c

$ ls
REP2 REP3 a.c b.c c.o
$ ls REP2
d.c e.c
$ ls -il
34982 drwxr_x_ _ _ 2 ali 64 Mar 11 1:43 REP2
22782 drwxr_x_ _ _ 2 ali 1024 Mar 11 14:46 REP3
47267 _rwxr_x_ _ x 1 ali 16364 Mar 1 11:43 c.o
69789 _rwxr_x_ _ _ 2 ali 64 Mar 1 11:43 a.c
67659 _rwxr_x_ _ _ 2 ali 64 Mar 1 11:43 b.c
Affichage interactif
a- Appel simple :

more fichier

affichage page par page d’un fichier de


texte, avec une pause en fin de chaque
page.
Après une pause, on peut reprendre le
défilement.
b- Appel avec options :
more [option] [-n] [+nl] [+/ chaîne] [fichier ]*
-n nombre de lignes affichées;
+nl démarrer l’affichage à la ligne nl;
+/ chaîne démarrer deux lignes avant de
rencontrer chaîne dans le fichier.
Parmi les options :
-d affichage d’un message plus explicite que
-More- en fin de page :
press space to continue, ‘q’ to quit
-l ne pas tenir compte des (fin de page) du
fichier.
Requêtes :
A la fin de chaque page, l’utilisateur peut envoyer une requête :
entrée affiche la ligne suivante;
espace affiche la page suivante;
q quitter more;
= affiche le numéro de ligne courante;
v entre dans l’éditeur vi, à la ligne courante;
/ chaîne affiche la suite, deux lignes avant de
rencontrer chaîne;
! commande exécute la commande ;
. répète la requête précédente;
: n (next) passe au fichier suivant, quand more est
appelé avec plusieurs fichiers en paramètre;
: p ( previons ) passe au fichier précédent.
Remarque :
more cherche ses options permanentes
dans la variable MORE.

Si le fichier .profile contient par exemple


MORE =‘-5’; export MORE
alors tout appel comme
more fichier
sera équivalent à :
more -5 fichier
Affichage complet et concaténation

cat [fichier]*
Exemple :

$ cat fichier

$ cat >fichier ^d : pour terminer

$ cat f1 f2 > f3
Affichage du début :

head [-n] f

$ head fichier

$ head -5 fichier
Affichage de la fin d’un fichier :
tail [+ | -] nl fichier
Exemple :
$ tail f affiche les dix dernières lignes de f.

$ tail +5 fichier
affiche de la ligne 5 à la fin du fichier.

$ tail -5 fichier
affiche les 5 dernières lignes de f.
Extrait d’un nom de fichier : basename
basename nom [suffixe]

Exemple :
$ basename ab.c .c
ab

$ basename prog-gus.p -gus.p


prog
Exemple :
Programme qui copie les .c en .old
Comparaison de fichiers sans détail :
cmp fichier1 fichier2
0 si les fichiers sont identiques,
1 s’ils sont différents

Remarque :
$ cmp -s f1 f2
-s supprime les commentaires.
Affichage par page, par colonne :
a- Appel simple
pr f1
b- Appels avec options
pr [option]* [fichier]*
+k commencer l’affichage à la page k ( défaut 1);
-k afficher sur k ( défaut 1) colonnes de même
longueur
-m fusionne les fichier et les affiche côte à côte (
incompatible avec -k);
-sc associé à une option -k ou -m, demande à ne pas
tronquer les lignes trop longues et à remplacer le
séparateur de colonnes par défaut (le TAB) par la
caractère c;
-h texte l’argument texte remplacera le nom du fichier dans
l’en-tête;
-t supprimer l’en tête, les lignes blanches de haut de
page et les lignes blanches de fin de page.
Exemple :
Afficher fichier sur 3 colonnes :
$ pr -3 –t fichier

Afficher les fichiers TD1.txt et TD2.txt cote à cote


avec une en-tête, sur 2 colonnes :

$ pr –mh “lists pat TD“ TD1.txt TD2.txt


Longueur d’un fichier :
wc [-lwc] [fichier]*

Exemple :
$ wc -lwc fichier

$ wc -l fichier
Où se trouve un fichier :
find [répertoire]+ [expression]+
répertoire est la liste des racines des sous hiérarchies à parcourir.
expression est une suite d’options exprimant à la fois les critères de sélection
des fichiers et les actions à leur appliquer.
Lorsque le critère est vrai, l’action est exécutée.
Dans la suite, on appelle ‘fichier courant’ le fichier examiné par find à un instant
donné.
Options, où n est mis pour n, -n, +n, -n veut dire ‘n et moins’, +n veut dire ‘n et
plus’ :
name motif vrai si le motif s’applique sur le nom du fichier courant
user nom vrai si le fichier courant appartient à l’utilisateur nom
atime n vrai si le fichier a été utilisé dans les n derniers jours. Peu
utilisable, car find modifie la date d’accès aux fichiers qu’il
examine
mtime n vrai si le fichier a été modifié dans les n derniers jours
newer fich vrai si le fichier courant a été modifié plus récemment que fich
(expression) vrai si l’expression est vraie. Les parenthèses (qu’il faut faire
précéder d’un blanc et d’une contre barre pour qu’elles ne
soient pas interprétées par le Shell) sont nécessaire si les
expressions simples sont combinées par et (par défaut), ou,
non
$ find / -name fichier -print fait
Recherche d’une chaîne dans un fichier :
grep [option] chaîne [fichier]*
Options :
 v affiche les lignes qui ne contiennent pas le motif
 c n’affiche que le nombre de lignes qui contiennent le motif
i ignore la distinction minuscule / majuscule
l n’affiche que les noms des fichiers renfermant le motif
 n numérote les lignes affichées
 s ou q les messages sont supprimés

Le code de retour est :


 0 si un motif a été trouvé
 1 sinon
 2 s’il y a eu des erreurs
Généralités sur les processus
Un processus est un programme en cours d’exécution.
programme = statique processus = dynamique
Un même programme s’exécutant plusieurs fois donne
des processus différents.

Un utilisateur <==> au moins un processus


(le login Shell)
Caractéristiques d’ un processus :
son pid ( process identifier ) un numéro qui lui attribue
UNIX dès sa création.
le pid du processus parent (ppid)
son propriétaire
son terminal d’attachement
un certain nombre d’autres attributs, priorité par
exemple
Naissance et terminaison d‘un processus
un processus doit naître pour exister.

Un processus meurt de deux façons :


 normalement
ou
 anormalement

$ps
PID TT STAT TIME COMMAND
6087 tty0 S 0:00 -csh
6091 tty0 R 0:00 ps
Quelques commandes
nice [-n°] commande [paramètres]
priorité de 1 à 19 , priorité par défaut : 10
nohup commande (&)
processus non tué au logout
kill -9 processus_ID
le processus désigné est tué
at 1600 <commande>
Programmer l’heure d’une commande
sleep <nombre>
Suspendre l’exécution d’une commande
Redirection

organe d’entrée commande ou organe de sortie


(par défaut clavier) programme ( par défaut écran )
shell

les erreurs
( par défaut écran )
Redirection des E/S :

>mot redirige la sortie standard sur un mot,


avec création ou destruction éventuelle
>> mot idem, mais si le fichier désigné par mot
existe déjà, il est allongé (et non détruit)
< mot redirige l’entrée standard sur mot
mot est un nom de fichier ou une variable ou
un paramètre désignant un fichier.
Redirection des erreurs :
2 > mot
2 >> mot
Exemple :

$ cat f1 f2 > f3

$ ls >f

$ ls f > fichier

$ ls f 2 > fichier

$ ls f > f1 2 > f2

$ nohup prgme >ff 2>fff


Pipe

clavier
commande1
Sortie | Entrée commande2
écran

erreur (écran) erreur (écran)

$commande1 | commande2| .............................| commanden


Pipe
1- Compter le nombre de fichiers dans le repertoire courant :

$ ls | wc –w
Pipe
Pipe
2- afficher les quatres derniers noms, dans l’ordre alphabétique,
d’une liste se trouvant dans le fichier liste :
$ cat liste
BA
KO
AL
HA
AH
AA
Résultat de la commande :
AL
BA
HA
KO
$ cat liste | sort | tail -4

$ sort liste | tail –4


Caractères spéciaux
Commandes séquentielles :
cmd1;cmd2;cmd3

Commande background :
cmd&
redirection des e/s

Groupement des commandes :


( )
Ex:

$ date ; echo fin de commande > toto


$ cat toto
fin de commande
$ (date ; echo fin de commande ) > toto
la date
fin de commande
Génération de noms
Facilités pour désigner de manière explicite un groupe
de noms de fichiers à l'aide d'une notation condensée.
Usage de caractères spéciaux dits méta-caractères :
•? remplace un caractère quelconque, sauf le RET
ls d?g

• * remplace n'importe quelle chaîne, même vide, de


caractères ne comportant pas de RET.
ls s*n

•[...] remplace un caractère parmi ceux qui sont


énumérés entre les crochet, en un caractère
ls d[io]g
Mécanismes d’échappement
"..."
parenthésage dans lequel aucun caractère sauf
`, " et $ n'a de signification spéciale

`...`
exécution de la phrase placée entre accents
graves

\ (backslash) négation d’un méta-caractère


Exemple

$ echo “ `date` ? “
Lundi 4 Mai 2004 ?

$ echo ‘ $a ` date ` ‘
$a ` date `
$ echo \?
?