introduction à l'unix
DESCRIPTION
Introduction au cours de l'unix avec des exemplesTRANSCRIPT
Plan du cours
Présentation généraleBourne ShellInterface C / Unix
systemesdeproduction.blogspot.com
Système UNIX
LAZREK Mohamed Département Informatique
LE SYSTEME UNIXLE SYSTEME UNIX
PRESENTATION GENERALE
PRESENTATION GENERALE
UNIX ?
Est un système d’exploitation
Permet la gestion des ressources de la machine :
matérielset
logiciels
Version V Rel.4Version V Rel.4
Version V Rel. 3Version V Rel. 3
Version V Rel.2Version V Rel.2
Version V Rel. 0Version V Rel. 0
Version IIIVersion III
Version 7Version 7
Naissance d’UNIXNaissance d’UNIX
Version 6Version 6
BSD 4.3BSD 4.3
BSD 4.4BSD 4.4
BSD 4.2BSD 4.2
BSD 4.1BSD 4.1
AIX 3.0AIX 3.0
AIX 3.2AIX 3.2 OSF/1OSF/1
OSF/DCEOSF/DCEAIX 4.2AIX 4.21995
1991
1987
1985
1983
1981
1979
1969
1976
LE SYSTEME UNIXun peu d'histoire :
UNIX LINUX
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âchesréseau
Mémoire Centrale
Processeur
P1 P1
Déroulement de l’exécution d’un programme dans un système :
mono utilisateur
et
mono tache
Mémoire Centrale
ProcesseurProcesseur
E/S
P1
P2
P3
P4
P1P2P3P4 P2P4
Fin E/S et du Programme
Fin E/S
Fin Quantum
Fin du Programme
Lancer l‘exécution
Demande E/SArchitecture d’un système multi utilisateur
P1
P2
P3
P1
P2
P4P2
P4
P4
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 ....
Un langage de commande : séquentiel pseudo parallèle abréviations re-directions d'entrée-sorties synchronisation...
MAIS AU FAIT ...... QUI ES TU ?
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)
Une documentation en ligne
Matériel
Noyau
Applications
Shell
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
Structure du système
Le shell : est l’interface entre le noyau et l’utilisateur, des centaines de commande sont à la disposition des
utilisateurs
Shell
Shell
Shell
utilisateur y
utilisateur z
utilisateur x
noyau
matériel
Connections des utilisateurs
Documentation
$ man commande
Remarque :
majuscule # minuscule
Tout utilisateur est enregistré dans deux fichiers :
/etc/groupnom de groupenuméro unique de groupe
/etc/passwdnom de loginmot de passe crypténuméro unique d'utilisateurnuméro unique de groupenom complet de l'utilisateurrépertoire initialinterpréteur de commande
NOTION D'UTILISATEUR
avec possibilité de changer le mot de passe:
login : alipassword : *******
$ passwdchanging password for aliold password : ********new password : ********retrype new password : *******
La commande who permet de connaître les utilisateurs connectés
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
LE SYSTEME DE FICHIERSStructure arborescente
/
usr etc bin lib
group passwd
élève1
fich
Fich3Fich2Fich1
adm etudiant
profs
élève3élève2
TP2TP1
Fich5Fich4
home
oldenim
/
bin dev usr
local
/
local bin
readme
Volume 1
Volume 2
Montage du volume 2
montage d’un volume
Propriétaire et droits d’accèsa- protectionstrois 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 FICHIERSStructure arborescente
/
usr etc bin lib
group passwd
élève1
fich
Fich3Fich2Fich1
adm etudiant
profs
élève3élève2
TP2TP1
Fich5Fich4
home
oldenim
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 lsW (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épertoirede modifier une ligne : changer le nom d’un fichierde 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épertoirex droit de traverser le répertoire.
Exemple :
r - - : chez le père : ls sr
- - x
- w x
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 la forme 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 eta 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
rw_ r_ _ _ _ _ chmod u-w f
rw_rw_rw_ chmod a=r f
rwx r_x _ _ x
r_ _r_ _ _ _ _
r_ _r_ _ r_ _
Commande qui permet d’ajouter le droit d’exécution pour le propriétaire du fichier toto
chmod u+x totoCommande qui permet d’ajouter le droit d’écriture
pour le groupe du fichier totochmod 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 totoCommande 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épertoirescd #home directory
se positionner sur le répertoire personnel
pwd #print working directoryimpression du répertoire courant
cd <nom_rep> # change directorychangement de répertoire courant
mkdir <nom_rep> # make directorycréation d'un sous- répertoire
rmdir <nom_rep> # remove directorydestruction d'un répertoire si vide
mvdir <nom_rep1> <nom_rep2>re-nommage de répertoire #move directory
entrée
entrée
entrée
entrée
entrée
entrée
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 :
REP2 :
cp a REP2/nf
cp ../a nf
REP1
REP2a b
c
nf
Déplacement ou renommage : mv
mv ancien nouveau
Exemple :
Avant :
Aprés :
REP1
REP2a b
c
REP1
REP2a b
nc
REP1 :
REP2 : mv c nc
mv REP2/c REP2/nc
Autre exemple :
Avant :
Aprés :
REP1
REP2a b
nc
REP1
REP2a autreb
nc
REP1 :
REP2 : mv ../b autreb
mv b REP2/ autreb
avant :
aprés :
REP1
REP2a autreb
nc
REP1
REP2a autreb
nc
REP1 :
REP2 : mv autreb nc ..
mv REP2/autreb REP2/nc .
créer des liens sur fichier
ln anciennom nouveaunom
pas de duplication physique du fichier.
ln [fichier]+ rep
G5 j’ai donné le Mini ProjetG1 à refaire
REP2 : ln ../* .
REP1
REP2a
autreb nc
REP1 : ln * REP2/
Destruction d’un fichier ou d’un lien : rm
rm [ option ] [ fichier ]+
rm –r sous_rep
Appliquer à un lien symbolique, rm retire le lien symbolique.Destruction physique
options :r (récursif)
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
$ lsREP2 REP3 a.c b.c c.o $ ls REP2d.c e.c$ ls -il34982 drwxr_x_ _ _ 2 ali 64 Mar 11 1:43 REP222782 drwxr_x_ _ _ 2 ali 1024 Mar 11 14:46 REP347267 _rwxr_x_ _ x 1 ali 16364 Mar 1 11:43 c.o69789 _rwxr_x_ _ _ 2 ali 64 Mar 1 11:43 a.c67659 _rwxr_x_ _ _ 2 ali 64 Mar 1 11:43 b.c
REP1
REP3REP2a.c b.c
d.c e.c
c.o
Affichage interactifa- 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 fichieraffiche 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 fichier20 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 simplepr f1b- Appels avec optionspr [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.
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
Exemple :
Afficher fichier sur 3 colonnes :
$ pr -3 –t fichier
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 courantuser nom vrai si le fichier courant appartient à l’utilisateur nomatime 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 joursnewer 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 -printfait
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
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étaireson terminal d’attachementun certain nombre d’autres attributs, priorité par exemple
Généralités sur les 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
Naissance et terminaison d‘un processus
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
Quelques commandes
Redirection
organe de sortie( par défaut écran )
commande ouprogramme
shell
organe d’entrée(par défaut clavier)
les erreurs( par défaut écran )
Redirection des E/S :
Redirection des erreurs : 2 > mot 2 >> mot
mot est un nom de fichier ou une variable ou
un paramètre désignant un fichier.
< mot redirige l’entrée standard sur mot
>> mot idem, mais si le fichier désigné par mot
existe déjà, il est allongé (et non détruit)
>mot redirige la sortie standard sur un mot, avec création ou destruction éventuelle
$ cat f1 f2 > f3
$ ls > f
$ ls f > fichier
$ ls f 2 > fichier
$ ls f > f1 2 > f2
$ nohup prgme >ff 2>fff
Exemple :
commande2
écranSortie | Entrée
erreur (écran)
$commande1 | commande2| .............................| commanden
Pipe
commande1clavier
erreur (écran)
Pipe1- Compter le nombre de fichiers dans le
repertoire courant :
$ ls | wc –w
Pipe
Pipe2- afficher les quatres derniers noms, dans l’ordre alphabétique,
d’une liste se trouvant dans le fichier liste :$ cat liste
BAKOALHAAHAA
Résultat de la commande :ALBAHAKO
$ cat liste | sort | tail -4
$ sort liste | tail –4
Caractères spéciauxCommandes 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 nomsFacilité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 \?
?