• Aucun résultat trouvé

I5TC1: Cours SR (Syst`emes et R´eseaux) I Licence L3 Informatique

N/A
N/A
Protected

Academic year: 2022

Partager "I5TC1: Cours SR (Syst`emes et R´eseaux) I Licence L3 Informatique"

Copied!
82
0
0

Texte intégral

(1)

I5TC1: Cours SR (Syst` emes et R´ eseaux) I Licence L3 Informatique

Olivier Togni, LE2I (038039)3887

olivier.togni@u-bourgogne.fr

Modifi´e le 25 septembre 2007

1 de 82

(2)

Objectifs et d´ eroulement

Objectifs :

I comprendre les concepts mis en oeuvre dans les syst`emes d’exploitation au travers d’Unix,

I ˆetre capable d’administrer les tˆaches courantes

I ˆetre capable de programmer des applications r´eseau Volume horaire: 8CM, 10TD, 7 TP

Evaluation: projet en binome (coeff 0.5) + examen final ´ecrit (coeff. 1)

(3)

Sommaire

I Introduction `a Unix

II Programmation syst`eme (Shell, awk, C)

III Partage de ressources et comm. inter-processus IV Communications inter-syst`emes

V Structure des fichiers et processus

3 de 82

(4)

R´ ef´ erences utilis´ ees

A. Tanenbaum, Syst`emes d’exploitation, Eyrolles, 2003.

M. J. Bach, Conception du syst`eme Unix, Masson, 1993.

J. M. Rifflet, J. B. Yun`es, Unix programmation et communication, Dunod, 2003.

...

(5)

Introduction `a Unix

Introduction ` a Unix

1. Aper¸cu g´en´eral

I Historique

I Structure

I Commandes et interpr`etes

I Environnement utilisateur

I Conclusion 2. Les fichiers 3. Les processus

5 de 82

(6)

Introduction `a Unix Aper¸cu g´en´eral

Historique d’Unix

1965 Multics, Bell, General electric, MIT 1969 Unix ATT Thompson and Ritchie 1971 Portage sur PDP11 bi-utilisateurs

1973 r´e´ecriture en C. Le Consent Decree oblige ATT `a le donner au Universit´es

1977 D´ebut du march´e 500 sites

1980 Sortie sur micro Xenix de Microsoft 1984 100 000 installations

1990 Linux

(7)

Introduction `a Unix Aper¸cu g´en´eral

Historique d’Unix

1973en C

Unix system II 1981

1983 Unix system V

1990 Unix system V

1981

1989 1990 Linux 1986

Xenix 1980

Xenix 2.0

SCO Unix AIX 1.0 BSD 4.3

1986 1977 BSD

SUN OS1981

Microsoft

IBM SUN

Univ. Berkeley

Bell Labs

Berkeley Sun AT&T IBM micro

7 de 82

(8)

Introduction `a Unix Aper¸cu g´en´eral

Standardisations

Plusieurs versions⇒ pb de portabilit´e⇒ besoin de standardisation

I SVID 84

I X/OPEN 84

I Posix (Portable Operating System Interface) 86

I OSF (Open Software foundation) 88⇒ OSF/Motif ⇒X Windows et syst OSF/1 en 91

I Unix International 88⇒ BSD, Xenix, SunOS puis syst V

(9)

Introduction `a Unix Aper¸cu g´en´eral

Structure

Mod`ele en couches

Partie Matérielle NOYAU grep

cpp asldcomp

a.out ed

wc cat sh more

CC

9 de 82

(10)

Introduction `a Unix Aper¸cu g´en´eral

Structure

partie mat´erielle : fournit au syst`eme les services de base noyau(syst`eme d’exploitation) : fournit les services commun aux prg et les isole des particularit´es du mat´eriel⇒ facile de les utiliser sur des machines diff´erentes.

Ex : Un prg prend en compte la taille d’un mot machine est plus difficile `a porter que les autres

Commandes :prgs comme sh, who, grep, ... qui font partie des configurations standard.

D’autres prg peuvent ˆetre construits `a partir de prg de niveau inf´erieur

(11)

Introduction `a Unix Aper¸cu g´en´eral

Structure

les prg des couches hautes (tels le shell et vi) interagissent avec le noyau grace `a un ensemble bien d´efini d’appels systemes.

Les appels syst`emes demandent au noyau de r´ealiser diverses op´erations pour le prg appelant et d’´echanger les donn´ees entre le noyau et le prg

11 de 82

(12)

Introduction `a Unix Aper¸cu g´en´eral

Shells

Interpr`ete de commande ou shell= prg it´erant ind´efiniment la lecture d’une ligne de commande au clavier et la mise en ouvre de l’action (ou des actions) d´ecrite(s) par cette ligne : Interface entre l’utilisateur et le syst`eme.

Sous UNIX, un interpr`ete de cmd est une cmd banalis´ee. Il en existe plusieurs

version de base :sh,

extensions :ksh(korn shell),csh (C-shell) etbash(GNU Bourne-Again shell) agr´eable et puissant.

(13)

Introduction `a Unix Aper¸cu g´en´eral

Fonctionnement du shell

1. affichage d’um msg “prompt” ($ ou bien>) ⇒ prˆet `a lire (saisie, ´edition, validation)

2. analyse et traitement de la ligne lue (d´ecoupage, substitution ) 3. ex´ecution des cmd correspondantes (redirection E/S,

traitement si cmd interne, recherche et lancement sinon.

13 de 82

(14)

Introduction `a Unix Aper¸cu g´en´eral

Format cmd

Format :nomCmd [-opts] args...

Ex de commandes :

Aide: man, apropos, whatis

Info: who, hostname, logname, date, cal, uname (nom du syst), ...

Recherche: find, grep, tr, ...

Listage/affichage: cat, echo, ...

(15)

Introduction `a Unix Aper¸cu g´en´eral

Environnement utilisateur

Compte et login: Au d´emarrage du syst`eme, chaque poste de travail est prˆet `a accepter la connexiond’un utilisateur.

Le syst`eme connaˆıt la liste des utilisateurs autoris´es `a se connecter sur la machine.

Chaque utilisateur est identifi´e par un nom : le nom de login.

Quant un utilisateur est d´efini sur machine on dit qu’il poss`ede un comptesur cette machine.

15 de 82

(16)

Introduction `a Unix Aper¸cu g´en´eral

Environnement utilisateur

Le compte est prot´eg´e par mot de passe : initialis´e par l’admin, il doit ˆetre chang´e `a la premi`ere connexion.

Choix du mdp : robuste pour tentative d’effraction⇒ longueur = 8, complexit´e (pas de nom ,prenom, hobby, date ; m´elanger carac alpha+chiffres et ponctuation)

Le changement se fait par la cmdpasswdsur machine isol´ee et yppasswdsur machine en r´eseau.

L’administrateur du syst`eme a pour nomroot, il a tous les droits sur le syst`eme.

(17)

Introduction `a Unix Aper¸cu g´en´eral

Environnement utilisateur

Interface X11: interface avec le poste graphique

(ecran/clavier/souris) g´er´ee par un prg particulier appel´eserveur X.

Logiciels: standard assez riche mais ancien.

I prg : C, Fortran, assembleur, SH, Csh, Awk, etc + Scheme, lisp, prolog, Ada, effeil, C++, etc

I aide `a la prg : d´ebogueurs adb, dbx ; g´en´erateurs d’applis make ; g´en de prg Lex et Yacc ;

I env. Gnu : syst. compatible Unix, gratuit avec src dispo. Gnu Emacs, GCC (c, C++, objective C), GDB, BASH sont issus du projet.

I ´editeurs : ed, vi, Emacs, etc. Emacs est multifenˆetre, multibuffer, multifichiers ; env. extensible par prg en Lisp, modes sp´ecialis´es

17 de 82

(18)

Introduction `a Unix Aper¸cu g´en´eral

Environnement utilisateur

traitement de texte Tex/LateX :

Tex : le plus puissant au niveau possibilit´es typographiques. int`egre un langage de prg, donc extensible.

Latex : surcouche adapt´ee `a la composition de livres, rapports, articles, documents techniques, etc

Texte LateX = fichier ASCII contenant du texte normal et des cmds (commencent par\).

Compil´e au moyen de la cmd texoulatexproduit un fichier .dvi, cmddvips: dvi→ postscript

pdflatexlatex →pdf directement

(19)

Introduction `a Unix Aper¸cu g´en´eral

Environnement utilisateur

\textbf{traitement de texte Tex/LateX:}

Tex: le plus puissant au niveau possibilit´es typographiques. int`egre un langage de prg, donc extensible.

Latex: surcouche adapt´ee `a la composition de livres, rapports, articles, documents techniques, etc Texte LateX = fichier ASCII contenant du texte normal et des cmds (commencent par $\backslash$).

Compil´e au moyen de la cmd \texttt{tex} ou {\tt latex} produit un fichier .dvi, cmd {\tt dvips}: dvi $\rightarrow$ postscript

{\tt pdflatex} latex $\rightarrow$ pdf directement

19 de 82

(20)

Introduction `a Unix Aper¸cu g´en´eral

Conclusion

UNIX = syst`eme ancien dont de nombreux concepts ont ´et´e repris dans les syst`emes r´ecents

Noyau contient peu de cmd, mais possibilit´e de construction incr´ementale

Inconv´enients :

I Peu abordable pour les non informaticiens

I pb de compatibilit´e entre diff´erentes versions Avantages :

I Multitaches, multi-utilisateurs

I jeu complet d’outils de tous niveaux

(21)

Introduction `a Unix Aper¸cu g´en´eral

Avantages suite

I souci de transparence :

I unification de l’acc`es aux p´eriph´eriques

I mod`ele en couches

I fichiers de param`etrage en ASCII

I construction incr´ementale : outils complexes cr´ees `a partir d’outils plus simples

I ouverture du syst`eme :

I portabilit´e d’une machine `a l’autre (si noyau port´eOK)

I interop´erabilit´e : plusieurs machines diff´erentes peuvent travailler ensemble

I scalabilit´e : mˆeme systeme sur machines de tailles diff´erentes

I portabilit´e des applications gr`ace aux standards de

eveloppement tels les API pour prg source et les ABI (binary) pour les executables (1 ABI par processeur)

21 de 82

(22)

Introduction `a Unix Les fichiers

Types de fichiers

Diff´erents types de fichiers

I les fichiers ”normaux” (”-” en d´ebut de ligne par ls-l) : texte, image, exec, ...

I les r´epertoires (”d”)

I les fichiers sp´eciaux, qui servent `a communiquer avec les p´eriph´eriques (mode b,c,r,p)

I les liens symboliques (”l”) ou physiques : objets pointant sur un autre (raccourci)

(23)

Introduction `a Unix Les fichiers

Arborescence de fichiers

Syst`eme de fichier (SF) = Arbre dont la racine est not´ee/.

Chaque processus poss`ede un r´epertoire courant qui est sa position dans l’arbre du SF.

Lors de la connexion, le r´epertoire courant du shell est le r´epertoire d’accueil (home directory). Il peut ˆetre modifi´e au moyen de la cmdcdet affich´e au moyen de pwd.

23 de 82

(24)

Introduction `a Unix Les fichiers

Arborescence standard

I r´epertoires de fichiers ex´ecutables : /bin, /usr/bin, usr/local/bin et les ´equivalent sbin, pour le root

I r´ep de biblioth`eques : /lib/usr/lib/usr/local/lib

I fichiers d’administration : /etc, /adm

Ex : - /etc/passwd ou chaque ligne d´efinit un utilisateur - /etc/rc init du systeme

- /etc/utmp liste des utils connect´es

I r´ep des utilisateurs : /users ou parfois /home ou /u

I /usr/man pour le manuel et /usr/doc/HOWTO de Linux

I Fichiers speciaux de p´eriph´eriques : /dev

I divers : /tmp

(25)

Introduction `a Unix Les fichiers

Chemin dans le SF

Un chemin identifie un fichier (r´egulier ou r´epertoire) dans le SF. Il correspond `a un d´eplacement dans l’arbo de fichiers. Dans chaque r´epertoire R, il existe 2 noms reserv´es :

.. : r´ep p`ere de R . : r´ep R

Chemin Absolu: exprime un d´eplacement par rapport `a la racine (ind´ependant de la position courante)

Chemin Relatif : exprime un d´eplacement par rapport `a la position courante

Tout chemin se d´ecompose enprefixeet nom de base.

Si chemin contient des/, le nom de base est le mot suivant le dernier/, le reste est le pr´efixe. Le pr´efixe est toujours le chemin d’un r´epertoire

25 de 82

(26)

Introduction `a Unix Les fichiers

Commandes relatives aux fichiers

I Listage : cat, more, tail, head, ls

I Cr´eation : mkdir, touch, rm, rmdir, ln

I D´eplacements : cd, cp, mv Ex : cat dring.wav>/dev/audio

(27)

Introduction `a Unix Les fichiers

Droits sur le SF

Par rapport `a un fichier, les utilisateurs sont class´es en 3 classes :

I le propri´etaire du fichier ou r´epertoire qui est initialement son cr´eateur, (peut ˆetre chang´e par cmdchown)

I le groupe propri´etaire qui est par d´efaut le groupe auquel appartient le propri´etaire, mais peut ˆetre chang´e par la cmd chgrp

I tous lesautres utilisateurs

27 de 82

(28)

Introduction `a Unix Les fichiers

Droits : lecture, ´ ecriture, ex´ ecution

I lecture : permet de lister le contenu d’un fichier ou r´ep.

I ´ecriture : permet de modifier le fichier ou d’ajouter/supprimer une entr´ee dans le r´ep

I ´ex´ecution : permet de lancer le prg contenu ds le fichier ss forme de code binaire ex´ecutable ou de script shell ; pour un r´ep, permet de traverser le r´ep (pouvoir l’utiliser dans la partie pr´efixe d’un chemin)

⇒Trois paquets de 3 droits pour chaque fichier : prop grp autres

rwx rwx rwx

s s t

T

(29)

Introduction `a Unix Les fichiers

Droits

Trois repr´esentations :

caract`eres rwx r-x r-- Le ”-” indique l’absence de droit.

forme donn´ee par cmdls -l

binaire 9bits ou 1=droit donn´e, 0=droit retir´e

octale 3 valeurs octales donn´ees par les trois nombres binaires

Ex :

rwx r-x r-- 111 101 100

7 5 4

29 de 82

(30)

Introduction `a Unix Les fichiers

Modification des droits

Modification :chmod droits fichiers o`u droits=nouveaux droits en octal

ou bien modification(ajout/suppression) des droits existant par chmod [u,g,o,a][+,-,=] [r,w,x] fichiers

u=user, g=group, o=other, a=all ; +=ajout, -=suppression Ex : ajout d’un droit d’ex´ec pour tous : chmod a+x fic retrait du droit de lecture et ex´ecution au grp et autres :chmod go-r fic

Ex : arriver `a la config suivante :r-x --- --- chmod u=rx,go=-

chmod 500

(31)

Introduction `a Unix Les fichiers

Droits standards

Droits standards `a la cr´eation : d´ependent du syst`eme (notamment du niveau de protection souhait´e)

Souvent :rw-r--r-- pour fichier non ex´ecutables et rwxr-xr-x pour r´ep et ex´ec binaires

Les droits les moins restrictifs `a la cr´eation : D=666 pour les fichiers et D=777 pour les r´epertoires et fichiers ex´ecutables.

Ensuite, la variableumaskd´efinit les droits que l’on retire (en g´en´eral umask=022)

Modification des droits standards :umask masque nouvelle valeur de umask = D ET NON umask

Ex :umask 013 fic cr´e´es en mode 664 et r´ep en mode 764

31 de 82

(32)

Introduction `a Unix Les fichiers

Droits sp´ eciaux

Droits sp´eciaux :bits uid, gid et sticky bits

bituid(resp.gid) positionn´e : s `a la place de x pour user (resp. le grp)

⇒n’importe qui aura les droits du propri´etaire (resp. du grp) du fichier pendant qu’il l’ex´ecute (uniquement fichier binaire, pas script).

Ex : La cmdpasswd: l’utilisateur qui lance la cmd passwd doit avoir les droits de root pouvoir modifier le fichier /etc/passwd si S au lieu de s : bit uid ou gid positionn´e mais pas droit en ex´ecution

(33)

Introduction `a Unix Les fichiers

Droits sp´ eciaux

Pour les r´epertoires : lesticky bitt (sticky bit + ex´ec) ou T (sticky bit seul) `a la place du x des autres permet de pr´evenir l’effacement des fichiers du r´epertoire par un autre que le propri´etaire ou que root (utile pour les r´epertoires partag´es comme /tmp par exemple) Pour positionner droits sp´eciaux : chmodoctal + 1000 (sticky bit), 2000 (gid), (4000 uid)

Ex : chmod 5654 donne rwSr-xr-T

33 de 82

(34)

Introduction `a Unix Les processus

Les processus

processus = programme en cours d’ex´ecution

Unix est un syst`eme multitache qui travaille en temps partag´e ⇒ il y a un m´ecanisme pour allouer le processeur aux processus

(m´ecanisme de tourniquet ”round robin” avec notion de priorit´es).

Commandes relatives aux process :ps, bg, fg, jobs, kill

(35)

Introduction `a Unix Les processus

Entr´ ees/sorties (E/S)

Op´eration d’E/S=transfert de donn´ees entre zone m´emoire et fichier ou p´eriph.

Ex : process qui effectue E/S sur clavier et ´ecran.

Flotd’E/S d’un process = E/S actives Plusieurs types de communications possibles :

Process→ fichier fichier → process process → p´eriph´erique

p´eriph→ process Egalement entre 2 process :

process → process

35 de 82

(36)

Introduction `a Unix Les processus

Entr´ ees/sorties

A la cr´eation, un process poss`ede 3 flots d’E/S pr´ed´efinis (flots d’E/S standards) :

-stdin : flot d’E std, sur lequel on effectue op. de lecture std. Par defaut = clavier

-stdout : flot de S std, op. d’ecriture std. par defaut = ecran du terminal

-stderr : flot d’erreur std, affichage de msg d’err. Par defaut = ecran du term.

Process stderr stdout stdin

(37)

Introduction `a Unix Les processus

Redirections

M´ecanismes de redirection :il est possible de red´efinir les flots d’E/S std en les associant `a un nouveau fichier ou p´eriph. : on parle alors de redirection d’E/S.

Les redir sont possibles directement depuis un shell : D’un prg vers un autre prg (pipe outube).

Ex :ls -l |more redirige la sortie std de lssur l’E std de more.

stderr

stdin ls stdout stdin more stdout stderr

37 de 82

(38)

Introduction `a Unix Les processus

Redirections

D’un prg vers un fichier. Ex :ls-l > ls.l redirige le flot de sortie std delsdans un fichier de nom ls.l. voir fig.

stderr stdout

stdin ls ls.l

(39)

Introduction `a Unix Les processus

Redirection

Symboles de redirection en shell :

| pipe : SS cmd gauche vers ES cmd droite

< ES→ fichier

> SS→ fichier (cr´eation si n´ecessaire)

>> idem avec positionnement en fin de fichier 2> SES→ fichier

2>&1 fusion de la sortie erreur std sur la sortie std

39 de 82

(40)

Programmation syst`eme

Langages syst` eme

I shell

I awk

I perl

I C

On peut tout faire en C, certains traitements sont plus simples `a

´ecrire en shell/awk

(41)

Programmation syst`eme Shell

Environnement

Shell = liste de couples (variable,valeur) + cmd internes Var pr´ed´efinies : PATH, IFS, HOME, ...

cmds internes :cd, echo, pwd, read, set trap, wait,...

Envir. peut ˆetre initialis´e grˆace aux fichiers d’initialisation du shell, lus au moment de la connexion (sh : .profile, csh :.login, .cshrc ; bash :.bash profile .bashrc)

41 de 82

(42)

Programmation syst`eme Shell

Environnement

Traitement d’une cmd :

1. Phase de saisie : ´edition, historique, compl´etion 2. Phase de substitutions : analyse de la liste de cmd

3. Ex´ecution : la cmd r´esultant du 2 est recherch´ee puis ex´ecut´ee Exemple :date > RC.L ; ls-l . ? ?* |grep rc >> RC.L devient apr`es substitutions

date > RC.L; ls-l .bash_history .bash_profile .dtprofile .profile |grep rc >> RC.L5

(43)

Programmation syst`eme Shell

Traitement d’une commande simple

ligne<mot0> <mot1> <mot2> ... [<redirections>]

Si mot0 est une cmd interne au shell⇒ exec directe

Sinon un fichier de nom<mot0>est recherch´e dans la liste de repertoires de fichiers executable (d´efinie par la var PATH) - fichier non trouv´e

- fichier non executable par l’util

- fichier exec avec droits OK (ex : cp, rm,...)⇒ lancement de la cmd

- script avec acc`es OK ⇒ lancement d’un shell qui ex´ecute le script. Le chemin absolu du shell peut ˆetre pr´ecis´e dans la 1iere ligne du script :#!/bin/sh ou bien#!/bin/csh, ...

43 de 82

(44)

Programmation syst`eme Shell

Valeur d’une cmd

Toute cmd qui termine son exec retourne unevaleur.

- terminaison normale : le processus execute un appel syst`eme exit(i)=>valeur=i (normalement 0).

- term. anormale : process interrompu par r´eception du signaln0s (ex : 9 du kill -9) =>valeur = c s, avec c=1 si fichier core produit, 0 sinon et s = num´ero signal.

La valeur est interpr´et´ee par le shell comme un bool´een (0=vrai, autre=faux)

ATTENTION de ne pas confondre ler´esultat (ce qui est envoy´e vers la sortie std) d’une cmd avec sa valeur.

Ex : pwd valeur=0, resultat=/home1/togni

(45)

Programmation syst`eme Shell

Exemple

Ex : cat sortie.c

main(int argc, char **argv) {

if(argc==2) exit(atoi(argv[1]));

}

if sortie 0 then echo oui else echo non if sortie 100 then echo oui else echo non

Le signe $? repr´esente la valeur de la derniere cmd executee Ex prec : sortie 100

echo $?

va donner 100

45 de 82

(46)

Programmation syst`eme Shell

Cmd compos´ ee

pipeline= suite de cmd simples reli´ees par des symboles de redirection

cmd compos´ee= liste de pipelines reli´es par des symboles d’enchainement :

cmd1 ; cmd2 s´equentiel: cmd2 lanc´ee quand cmd1 est termin´ee cmd1 & cmd2 parallele: cmd2 lanc´ee en meme temps que cmd1 cmd1 && cmd2 et logique: cmd2 lanc´ee si cmd1 ret la val vrai cmd1 || cmd2 ou logique: cmd2 lanc´ee si cmd1 ret faux

Rem :cmd &suivi d’une commande vide lance cmd en arri`ere plan (rend la main au shell imm´ediatement)

Exs :cd $CHEMIN && ls -l a.out 2>&1>LOG || echo Erreur

(47)

Programmation syst`eme Shell

Parenthesage

pour forcer les priorit´es

Ex :echo $F1est-ce $F1 ou bien$F 1?

- Accolades Ex :{ cat $F1 || cat $F2} | wc -l

- parenth`eses : idem exec de la cmd ds un sous shell =>on peut alors rediriger les ES d’une liste facilement. Ex :(date ; pwd ; ls-cF) >LOG

Valeurd’une cmd compos´ee = valeur de la cmd la + `a droite

47 de 82

(48)

Programmation syst`eme Shell

Substitutions

Avant d’executer une ligne, le shell recherche les motifs a

substituer dans la ligne de cmd et remplace chacun d’entre eux par le resultat de la subs dans cet ordre :

1. substitution de commandes

Le motif‘<cmd>‘ est remplac´e par le r´esultat de l’exec de la cmd<cmd>

2. substitution de variables

$<var>est remplac´e par la valeur de la variable<var>

3. substitution de chemins Trois motifs :

∗ : suite ´eventuellement vide de caract`eres

? : un caract`ere qcq

[] : alphabet (ensemble de caract`eres)

(49)

Programmation syst`eme Shell

Substitutions

Ex : [abcdef] = [a−f], [A−Za−z]=toutes les lettres Rem : le caract`ere.en tˆete de fichier subit un traitement particulier : en g´en´eral, les fichiers commen¸cant par ’.’ sont les fichiers de config auxquels on acc`ede en le sp´ecifiant explicitement

⇒motif ∗produit la liste de tous les fichiers du r´ep courant ne commen¸cant pas par un ’.’ et.∗ ceux commen¸cant par un point.

49 de 82

(50)

Programmation syst`eme Shell

Quotations

Permettent de bloquer la subs de certains motifs :

Le caract`ere \ transforme le carac suivant en carac normal Une suiteentre apostrophes (quote) n’est pas interpr´et´ee et est consid´er´ee comme un seul mot

Ex :echo echo ’/***\’

echo ’/bin/[a-c]*’

Une chaineentre guillemetsest partiellement quot´ee ; seuls les motifs de substitution de chemin sont inhib´es

(51)

Programmation syst`eme Shell

Les variables

Var. Shell de type chaˆıne de caract : ident=let[let+chiffre]*

affectation :ident=mot

Vecteur de variables que l’on peut affecter au moyen de la cmd set :

set <mot1> <mot2>

place resp. mot1 dans la 1iere case, mot2 dans la 2ieme, etc seuls les 9 premiers ´el´ements sont directement accessibles grˆace aux motifs :

$1 : val du premier ´el´ement, $2 : val du 2ieme, ..., $9 : val du 9ieme

$# : nb elem courant

$∗: liste des ´el´ements

51 de 82

(52)

Programmation syst`eme Shell

Les variables

Ex :$ set ‘date‘

La commandeshiftpermet d’acceder, qd ils existent, aux autres elements du vecteur en decalant chaque elem vers la gauche (le 1er est perdu)

Lors de l’exec d’un script, le vecteur de variables est initialis´e avec la liste des param eventuels

Les autres motifs associ´es au $ : $0: nom de la cmd courante (shell courant ou script)

$$: pid de la cmd courante

$ !: pid du dernier process d´etach´e

(53)

Programmation syst`eme Shell

La commande Test

test <arg1> <arg2> ...

ou bien [ <arg1> <arg2> ... ]

renvoie une valeur vraie (0) ou bien faux (1) suivant arguments.

Tester l’existence et la nature de fichiers :

test









-f fichier

-d rep

-r <chemin> en lecture

-w en ecriture

-s de taille >= 0

Ex :test -d $NOM && echo repertoire

53 de 82

(54)

Programmation syst`eme Shell

La commande Test

Comparer

I 2 chaines qcqtest <chn1> =, != <chn2>

I 2 chaines num´eriques

test <chn1>













 -eq -ne -gt -ge -lt -le

<chn2>

Ex : if [ $# -lt 1 ] then echo "usage : $0 fichier fichier exit 1 fi

Arguments-o et -apour le OU et le ET logiques.

Ex :test $jour -ge 1 -a $jour -le 31

(55)

Programmation syst`eme Shell

La commande expr

´Evaluer des expressions arithm´etiques ou logiques simples (sans parenth`eses)

expr <e1>













 + -

\*

/

<

<=

<e2>

Ex :NB=‘expr $NB + 1‘

55 de 82

(56)

Programmation syst`eme Shell

La commande expr

Recherche de motifs :

expr <ch1> : <masque>

A pour r´esultat la longueur sur laquelle la chaine et le masque co¨ıncident. Le masque est une expr r´eguli`ere entre quotes Ex :expr $1 : ’bon.*’ renvoie 7 si $1 vaut bonjour ou bien bonsoir, 0 si banane

(57)

Programmation syst`eme Shell

Expressions r´ eguli` eres

Utilis´ees par egrep, grep, expr, vi, sed, awk, ...

Servent `a ´etablir une correspondance carac/carac entre un motif et plusieurs chaˆınes sauf si un m´eta-caract`ere est rencontr´e dans le motif.

M´eta-caract`eres :

^ pour debut de ligne

$ pour fin de ligne . remplace un caract`ere

* de 0 `a n fois le caract`ere la pr´ec´edant [] ensemble de caract`eres utilisables

\ ignorer l’effet du caract`ere suivant

{} indiquer le nombre d’occurences (attention, pr´efix´ees par \) () donner des num´eros d’ordre aux mots

Exs:

a\{3,4\} d´efinit "aaa" ou "aaaa"

[^0-9] pas un chiffre

57 de 82

(58)

Programmation syst`eme Shell

Structures de contrˆ ole

Si-Alors-Sinon : if <test>

then

<liste>

[ elif <test>

then

<liste>

. . . ] [ else

<liste> ] fi

Ex de script :

#!/bin/sh if [ $# = 0 ] then

cd ..

else cd $1 fi

echo "--> ‘pwd‘"

(59)

Programmation syst`eme Shell

Structures de contrˆ ole

Aiguillage : case <mot> in

<motif> [ | <motif> ...])

<liste>

...

;;

. . . esac

59 de 82

(60)

Programmation syst`eme Shell

Exemple d’aiguillage

case $N in mbox )

echo $N : boite aux lettres

;;

.* )

echo $N : fichier de configuration

;;

*.c | *.h | *.cpp )

echo $N : fichier source C

;;

* )

echo $N : type inconnu

;;

(61)

Programmation syst`eme Shell

Iterations

while <test>

do

<liste>

done

Utilisation courante : while [ $# -gt 0 ] do

case $1 in -o )

shift

$OUTPOUT=$1

;;

esac shift done

61 de 82

(62)

Programmation syst`eme Shell

Iterations

La boucleforpermet de r´ep´eter un traitement pour tous les

´el´ements d’une liste

for <nom> [ in <mot1> ... ] do

<liste>

. . . done

(63)

Programmation syst`eme Shell

Exemple de boucle for

for N in * do

cp $N $N.svg done

r´ep`ete la cmdcp <nom> <nom>.svgpour <nom>prenant successivement pour valeur tous les noms de fichiers du r´ep.

courant.

La cmdfor N in ‘cat $LISTE‘ ; do ... donepermet d’it´erer un traitement sur tous les mots d’une liste de mots contenue dans un fichier de nom contenu dans la variableLISTE.

63 de 82

(64)

Programmation syst`eme Shell

Les ´ echapements

Trois types :

continue: passage `a l’it´eration suivante break [<n>]: sortie de <n> it´erations

exit [<n>]: sortie du prg avec la valeur<n>

(65)

Programmation syst`eme Shell

Fonctions et sous-programmes

Indispensable pour modularit´e et ´eviter duplication de code D´efinies en utilisant la syntaxe du C

Ex :

display_usage () {

echo Usage: $0 [-acfx] fichier return 1

} add() {

return ‘expr $1 +$2‘

} usage () {

display_usage exit 1 }

if [ $# -ne 2 ] then usage else add $1 $2

echo $?

fi

65 de 82

(66)

Programmation syst`eme Shell

Fonctions et sous-programmes

Passage des param`etres : seules les variables export´ees sont accessible dans le ss-prg. Le ss-prg peut utiliser la valeur de retour comme param`etre.

On utilise le mot cl´e builtinpr´ec´edant un nom de cmd <cmd>

pour indiquer que l’on fait r´ef´erence `a la commande<cmd>

originale , mˆeme si celle-ci a ´et´e red´efinie par une fonction.

Ex :cd () { builtin cd $1 ; pwd}

(67)

Programmation syst`eme Shell

Programme r´ ecursif

$ more tree for N in $1/*

do

if [ -d $N ] then

echo R´epertoire: $N tree $N

else

echo Fichier $N fi

done

67 de 82

(68)

Programmation syst`eme Shell

Autres commandes internes

:retourne vrai

.ousourceex´ecution locale (sans utiliser un autre shell) eval´evaluation d’une chaine

execremplacement du shell courant

(69)

Programmation syst`eme Shell

Exemple : sh-- un shell restreint

#!/bin/sh

echo shell restreint while :

do

echo -n $PS1 read COMMAND ARGS case $COMMAND in

PATH=* )

echo interdit de modifier PATH

;;

cd* )

echo vous ne pouver bouger

;;

sh |csh | bash )

echo interdit de changer de shell

;;

exit | bye ) break 1

;;

* )

eval $COMMAND $ARGS

;;

esac done echo bye

69 de 82

(70)

Programmation syst`eme Le langage AWK

Le langage AWK

Cr´ee par Aho, Weinberger et Kernighan.

Il peut ˆetre class´e dans la cat´egorie des filtres. Mais c’est beaucoup plus qu’un utilitaire de gestion des fichiers textes, il int`egre un langage interpr´et´e tr`es voisin du C.

Cet utilitaire, comme sed, s’applique `a un fichier, ou `a un flot de donn´ees provenant de son entr´ee, si le fichier (pr´ec´ed´e de -f) est absent. Il lit ce fichier ligne par ligne (toutes les lignes par d´efaut).

Les lignes sont s´epar´ees par des retour-chariots.

(71)

Programmation syst`eme Le langage AWK

Champs

Chaque ligne (enregistrement) est d´ecompos´ee enchamps, les champs ´etant des chaines de caract`eres s´epar´ees les unes des autres par un caract`ere particulier appel´e le s´eparateur.

Ce caract`ere de s´eparation peut ˆetre fourni explicitement, sous la forme de l’option-F " :", par exemple, ou invoqu´e dans le motif d’une expression rationnelle.

La valeur du premier champ est contenue dans la variable $1, celle du deuxieme dans $2, etc. $0 repr´esente la ligne enti`ere.

71 de 82

(72)

Programmation syst`eme Le langage AWK

Utilisation

La fa¸con habituelle de l’invoquer est

awk {liste de commandes} fichier_de_donn´ees ou bien

awk -f fichier_prg.awk fichier_de_donn´ees Chaque ligne du programme awk est de la forme motif { action }

oumotifest soit une expression awk, soit une expression r´eguli`ere entre / / d´ecrivant la chaˆıne `a rechercher dans chaque

enregistrement du fichier de donn´ees et actionest la suite d’instructions `a executer quand l’enregistrement contient le motif.

(73)

Programmation syst`eme Le langage AWK

Motifs

On peut avoir les formes suivantes :

I BEGIN { action }L’action est ex´ecut´ee une fois avant de lire les donn´ees

I END { action }L’action est ex´ecut´ee une fois apr`es que awk ait lu toutes les donn´ees

I { action } Ex´ecute l’action pour chaque enregistrement lu sur le fichier de donn´ees

I motif Chaque enregistrement satisfaisant le motif est affich´e (action par d´efaut :print $0

I motif1,motif2 { action } Ex´ecute l’action pour chaque enregistrement d’entr´ee `a partir du premi`er enregistrement satisfaisant motif1 et jusqu’au prochain satisfaisant motif2. Si un enregistrement ult´erieur satisfait motif1, le processus est r´ep´et´e

73 de 82

(74)

Programmation syst`eme Le langage AWK

Exemple

ls -al | awk ’$6 == "oct" { sum += $5 } END { print sum }’

Pour chaque ligne produite parls -l, awk teste si le sixi`eme champ est ´egal `a oct, auquel cas il ajoute la valeur du cinqui`eme champ `a la variable sum.

Cet enchaˆınement de commandes compte donc le nombre d’octets total de tous les fichiers du r´epertoire courant modifi´es en Octobre.

(75)

Programmation syst`eme Le langage AWK

Variables

Les variables sont de type num´erique ou chaˆıne de caract`eres, elles n’ont pas besoin d’ˆetre d´eclar´ees. La premi`ere affectation fixe le type de la variable.

Ex de variables pr´ed´efinies :

I FSeparateur de champs

I RSeparateur de d’enregistrement

I NFLe nombre de champs dans l’enregistrement courant

I NRLe nombre total d’enregistrements lus dans tous les fichiers de donn´ees

Type tableau : un indice de tableau peut ˆetre un nombre ou une chaˆıne. Exemple : a[3]=”toto” ; a[”deux”]=titi.

75 de 82

(76)

Programmation syst`eme Le langage AWK

Instructions

Les op´erateurs logiques et arithm´etiques sont les mˆemes que ceux du langage C (++, +=, etc).

Les Instructions de contrˆole ont une forme tr`es similaire `a leur homologues en langage C :

if (expr) instr1 [ ;else instr2]

while (expr) instr do instr while (expr)

for (expr1; expr2; expr3) instr for (var in tableau) instr

(77)

Programmation syst`eme Le langage AWK

Fonctions

Les fonctions se d´efinissent de la mˆeme mani`ere qu’en C.

L’instructionreturn [expr] en fin de fonction permet de sp´ecifier la valeur de retour de la fonction.

Ex. de fonctions pr´ed´efinies sur les chaˆınes :

I index(s,t) retourne la position dans la chaˆıne s o`u la chaˆıne t apparrait pour la premi`ere fois

I match(s,er) retourne la position dans la chaˆıne s o`u l’expression eguli`ere er apparrait pour la premi`ere fois

I length(s)calcule le nombre de caract`eres de s

I split(s,a,fs)divise la chaˆıne s en utilisant le s´eparateur fs et range les ´el´ements obtenus dans le tableau a

I substr(s,p[,n])retourne la sous-chaˆıne de s commen¸cant par le p-i`eme caract`ere et contenantncaract`eres.

77 de 82

(78)

Programmation syst`eme Le langage AWK

Exemple

$1 != prev {print ; prev = $1}

Affiche chaque ligne du fichier qui est diff´erente de la ligne pr´ec´edente

(79)

Programmation syst`eme Prog. syst`eme en C

Prog. syst` eme en C

Un programme C comprend trois parties : les directives pour le pr´e-processeur, les d´efinitions de fonctions et le prog principal (fonction main).

Les dir. pr´e-processeur contiennent les inclusions de biblioth`eques

#include...avec /usr/includepour les biblio. pr´ed´efinies et /usr/include/sys pour les bib. sp´ecifiques au syst`eme.

En g´en´eral il y a 2 compilateurs C sous Unix : cc et gcc

Utilisation :cc ou gcc fic.c [-o nomexec]. Si pas -o alors l’ex´ecutable cr´e´e aura pour nom a.out

ccest le compilateur constructeur optimis´e pour un type de processeur

gccest plus souple, il permet les compilations crois´ees (comp. sur une architecture pour une autre archi)

Il y a aussig++et CC: compilateurs C++

79 de 82

(80)

Programmation syst`eme Prog. syst`eme en C

Entr´ ees/Sorties

E/S format´ees :

printf(const char * format,...)et scanf: affichage et lecture clavier sprintf: affichage dans une chaine fprintf: affichage dans une chaine Exemple :

#include <math.h>

#include <stdio.h>

fprintf (stdout, "pi = %.5f\n", 4 * atan (1.0));

(81)

Programmation syst`eme Prog. syst`eme en C

Entr´ ees/Sorties

Acc`es au fichier :

I Fonctions de bas niveau (appel direct au noyau) : un num´ero de handle (typeint) identifie le fichier

fonctionsint open(chemin, mode), create, read, write, close

et constantes O RDONLY,O WRONLY,O RDWR

I Fonctions de haut niveau : un id de flux (type FILE *) identifie le fichier

fopen, fclose, fread, fwriteet constantes r,w,a

I Fonction sync oufsyncpour forcer l’´ecriture du bloc sur disque

81 de 82

(82)

Programmation syst`eme Prog. syst`eme en C

Autres fonctions utiles

I messages d’erreur : bcp d’op´erations renvoient le code -1 et positionnent une variable errnopour pr´eciser l’erreur. La fonction perrorde erno.h affiche le msg d’erreur

I lecture des droits sur un fichier :acces(chemin, mode) renvoie 0 si acc`es autoris´e

I acc`es `a l’environnement :getenv(nom) pour lire une variable d’envir. depuis un prg C,setenv(nom,valeur,ecrast) ou unsetenv(nom) pour ajouter/supprimer une variable d’envir.

I processus : int getpid(),getppid() : num´ero de process courant/p`ere ;sleep(int sec) met en sommeil un processus

I manipulations de chaˆınes :NULL n’a pas la mˆeme signification sur tous les syst`emes, donc utiliser les fonctions mem...de

Références

Documents relatifs

– Il ne peut y avoir plus d’un processus dans sa section critique en mˆeme temps – Un processus en dehors de sa section critique ne peut bloquer un autre

Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 1 /

Linux n’est pas temps r ´eel Architecture de

– Obligation de publier les sources (pas de module binaire dans le noyau) – Pas adapt´e aux syst`emes `a taille m´emoire tr`es

L’inconv´enient essentiel des SSI est que le serveur HTTP doit lire ligne ` a ligne le code HTML de toute page `a renvoyer (tout au moins celles d’un suffixe d´etermin´e tel que

but it is not sure all the social network is small... R´ eseaux homog` enes R´ eseaux petit monde R´ eseaux sans ´ echelle caract´ eristique. The small world

Lorsqu’une personne se rend compte qu’elle n’est pas de la mˆ eme opinion qu’une personne voisine, elle peut d´ ecider soit de changer d’opinion et donc adopter l’opinion de

[r]