Loading documents preview...
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
Naissance Naissanced’UNIX d’UNIX 1969
LE SYSTEME UNIX un peu d'histoire :
Version Version66
1976
Version Version77
1979
Version VersionIII III
1981
BSD BSD4.1 4.1
BSD BSD4.2 4.2
Version VersionVVRel. Rel.00 1983 Version VersionVVRel.2 Rel.2 1985
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
UNIX
AIX AIX3.2 3.2
LINUX 1995
AIX AIX4.2 4.2
OSF/1 OSF/1
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 Multi-tâches
réseau
Déroulement de l’exécution d’un programme dans un système : mono utilisateur et mono tache P1
Mémoire Centrale
P1
Processeur
Architecture d’un système multi utilisateur Demande E/S P1
P4
Mémoire P3 Centrale
P1 P4 P3 P2 P1
Processeur P2
P2
P1
P4 P2
P4
Processeur P2
P4
E/S
Fin Quantum
P2 P3 P4
Fin E/S Fin E/S et du Programme
Lancer l‘exécution
Fin du 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 utilisateur x
noyau Shell matériel
Shell utilisateur z
utilisateur y
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 /
etc
usr
group
bin
passwd
lib
home
enim
old
profs adm
élève1
fich
Fich1
Fich2
etudiant
élève2
TP1
Fich3
élève3
TP2
Fich4
Fich5
montage d’un volume
/ bin
dev
Volume 2
usr
local
/ local
Volume 1 readme
Montage du volume 2
bin
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 /
etc
usr
group
bin
passwd
lib
home
enim
old
profs adm
élève1
fich
Fich1
Fich2
etudiant
élève2
TP1
Fich3
élève3
TP2
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 luimê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 - -x
-wx
:
ls sr
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]+
forme symbolique
2- dans la , mode est composé de deux ou trois champs collés les uns aux autres, de la façon suivante :
[qui ]*
position
qui : est l’un des caractères suivants :
[droit]+
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 w x
pour le droit r, pour le w 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 ] Convention :
.. . /
répertoire parent répertoire courant racine de l'arborescence
entrée
Manipulation de répertoires cd
#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 entrée
mvdir <nom_rep1> <nom_rep2> re-nommage de répertoire
entrée
#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
c
nf
REP1 :
cp a
REP2/nf
REP2 : cp ../a nf
Déplacement ou renommage : mv
mv ancien nouveau
Exemple : Avant :
REP1
a
b
REP2
c REP1
Aprés : a
b
REP2
nc
REP1 : mv REP2 :
mv
REP2/c REP2/nc c
nc
Autre exemple : Avant :
REP1
a
b
REP2
nc REP1
Aprés : a
autreb
REP2
nc
REP1 : mv REP2 :
mv
b REP2/ autreb ../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 nc
autreb
REP1 :
ln
*
REP2 :
ln
../*
REP2/ .
REP2
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) i
rm –r sous_rep
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
d.c
$ ls REP2 REP3 a.c $ ls REP2 d.c e.c $ ls -il 34982 drwxr_x_ _ _ 2 22782 drwxr_x_ _ _ 2 47267 _rwxr_x_ _ x 1 69789 _rwxr_x_ _ _ 2 67659 _rwxr_x_ _ _ 2
b.c
ali ali ali ali ali
REP3
REP2
c.o
e.c
c.o
64 1024 16364 64 64
Mar Mar Mar Mar Mar
11 11 1 1 1
1:43 14:46 11:43 11:43 11:43
REP2 REP3 c.o a.c 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 +nl +/ chaîne
nombre de lignes affichées; démarrer l’affichage à la ligne nl;
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 espace q = v / chaîne
affiche la ligne suivante; affiche la page suivante; quitter more; affiche le numéro de ligne courante; entre dans l’éditeur vi, à la ligne courante; 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
$ cat
f1
f2
^d : pour terminer >
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
ab.c
.c
$ 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 Exemple : $ wc -lwc $ wc
-l
[-lwc]
[fichier]*
fichier 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 6087 tty0 S 6091 tty0 R
TIME COMMAND 0:00 -csh 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 Programmer l’heure d’une commande sleep <nombre> Suspendre l’exécution d’une commande
Redirection
organe d’entrée (par défaut clavier)
commande ou programme shell
les erreurs ( par défaut écran )
organe de sortie ( 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
$ nohup
2 > f2
prgme
>ff
2>fff
Pipe clavier
commande1
erreur (écran)
Sortie
|
Entrée
écran commande2
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 \? ?