124
03/09/07 L3/unix 1 Pratique d’Unix introduction aux systèmes d’exploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

Embed Size (px)

Citation preview

Page 1: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 1

Pratique d’Unix introduction aux systèmes d’exploitation de type Unix

Licence L3 (S5)

Benjamin Quétier

½ ATER, Université Paris-Sud XI

Page 2: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 2

Organisation du module• Objectif :

– Cours (3*1h45): • Comprendre le fonctionnement d’un OS• Apprendre les commandes et outils utiles• Savoir se débrouiller (i.e. expliquer un problème, chercher la solution)

– TP (5*4h):• Pratique du système• Langage Shell• Langage Python• Outils pour la programmation

• Evaluation: – Un partiel sur feuille au TP3– Dernier TP : moitié TP, moitié examen sur machine (2h)

• Matériel : Linux/PC (licence) ; Solaris/SUN (miage)

Page 3: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 3

Plan du cours

1. Rappel d’architecture

2. Système d’exploitation: introduction

3. Présentation des systèmes Unix et affiliés

4. Premier contact

5. Système de fichiers

6. Processus

7. Notion de réseau

8. Programmation sous Unix

9. Outils pour la programmation

Page 4: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 4

1. Architecture (rappel)

Page 5: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 5

Architecture d’un ordinateur (1)

Mémoire

Stockage

Périphériques E/S

Bus

CPU

Page 6: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 6

Architecture d’un ordinateur (2)

• micro-processeur (CPU): unité de contrôle– Registres, Unité arithmétique et logique (ALU), caches, ...– Architecture multi-threading, multi-core, multi-processeurs, ...

• Mémoire principale – Mémoire « vive », RAM

• Mémoire cache• Mémoire « secondaire »

– Souvent, disques durs. Généralement, d’accès séquentiel.

• Contrôleur de périphériques– Permet d’accéder aux périphériques de manière transparente

• Bus de communication– Bus de données– Bus d’adresse– Bus de commande

Page 7: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 7

Architecture d’un ordinateur (3)

• Interruptions– Matérielle : périphériques vers processeur

– Logicielle : processeur vers processeur

• Modes noyau et utilisateur– Permet de restreindre les possibilités d’action

– Mode noyau : aucun contrôle

– Mode utilisateur : possibilité réduite

=> Comment utiliser un ordinateur?

Page 8: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 8

2. Système d’exploitation

Page 9: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 9

Rôle de l’OS

matériel

noyauapplications

Shell/Interfaces

Page 10: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 10

Définitions

• Système d’exploitation ou OS (Operating System) • Ensemble de programmes et de librairies• Deux fonctions:

– Interface standard entre l’utilisateur et la machine

– Gestion des ressources• Gestion mémoire vive

• Accès aux périphériques

• Gestion espace disque

• Gestion des programmes et processus

• Gestion des droits d’accès

Page 11: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 11

Classification• Par session :

– système conversationnels (Unix, Windows, MacOSX, etc)

– système transactionnels (billet avion)

• Par requête :– machine temps réel, garantie de services.

• Par travaux (batch) : – traitement par lots (machines de calcul; mise a jour BD).

• Mono-tâche / multi-tâches• Mono-utilisateur / Multi-utilisateurs• Mono-processeurs / Multi-processeurs• Manipulation des données / développement des programmes.• Qualité d’un OS :

– Fiabilité, Efficacité, Facilité d’emploi, Adaptabilité, Mesurabilité (historique/monitoring).

Page 12: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 12

Quelques OS• Microsoft Windows XP et Windows NT

– Interface graphique, logithèque très complète, facile d’utilisation.

– Payant, propriétaire, très gourmand en mémoire.

• Unix– Très stable, multi-utilisateurs par essence

– Lourd, parfois payant.

• Linux– Interface graphique, communauté très active, très bons outils de

développement, gratuit et ouvert, logithèque en perpétuelle augmentation.

– Derniers matériels pas toujours supportés, manque quelques logiciels.

• MacOS X (Apple, basé sur BSD)– Interface graphique, très facile d’utilisation, très fiable, basé sur UNIX

– Payant, propriétaire.

Page 13: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 13

3. Unix et Linux

Page 14: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 14

Unix : caractéristiques

• Ecrit à 98% en langage C, portable.• Origine dans années 1970 par AT&T et Berkeley• Norme POSIX de certification des systèmes UNIX• Enormément de versions

– LINUX, HP/UX, AIX, SOLARIS, IRIX, MAC OS X, …

• Caractéristiques:– Multi-tâches

– Multi-utilisateurs

– Sécurité (fonction et appartenance des fichiers et répertoires)

– Indépendance des périphériques (notion de device)

Page 15: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 15

Page 16: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 16

Historique• 1965: Multics (MIT, Bell Labs, General Electrics)• 1978: ATT commercialise Unix Système 7• 1979: L’université de Berkeley distribue gratuitement

BSD (Berkeley Software Distribution)• 1983: ATT System V vs. BSD 4.2• 1984: GNU (Richard Stallman, MIT)• 1987: X-Windows (MIT) - première GUI• 1991: naissance de LINUX (Linus Torvald)• 2001: Mac OS X (basé sur BSD)• Aujourd’hui :

– Linux (soutenu par IBM, Sun, HP, Novell, etc.), nombreuses distributions (mandriva, ubuntu, debian, etc.)

– Autres Unix gratuit, voire open-source: OpenBSD, …– Autres Unix propriétaires: Mac OS X, Solaris/Sun, HP/UX, AIX/IBM, …

Page 17: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 17

Unix : avantages & inconvénients

• Avantages– Très fiable

– Multi-plateformes

– Gestion de tous les services (mail, Web, FTP, compilateurs, administration, etc.)

– Logithèque très vaste et comprenant de nbx free/sharewares

– Plusieurs interfaces graphiques et shells disponibles.

• Inconvénients– Trop de standard (=> portage difficile)

– Administration lourde et complexe

– Le shell fait peur

Page 18: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 18

GNU/Linux• Pour l’utilisateur:

– Gratuit et ouvert, disponible en ligne

– Facile à installer, convivial, complet dès l’installation

– Réactivité de la communauté (pilotes matériel)

– Multiples interfaces graphiques utilisateur

– Logithèque très complète (et souvent gratuite)• Ex.: OpenOffice (equiv. Word/Excel), Gimp (equiv. Photoshop), Oracle

(payant, par contre - des alternatives gratuites existent en standard), etc.

• Pour les entreprises– Distribués aussi par des grandes entreprises : IBM, SGI, ...

– Spécialisable : clusters, serveurs web, serveurs base de données, ...

– Très stable

=> Linux est une véritable alternative aux OS commerciaux

Page 19: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 19

4. Premier contact avec Unix

Page 20: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 20

Accéder à la machine

[Rappel] Unix est un OS multi-utilisateurs. I.e. plusieurs utilisateurs peuvent utiliser le même ordinateur (directement ou via des connexions distantes), parfois en même temps.

• Cela implique– D’identifier l'utilisateur et lui donner accès a un espace privé;

• Notion de comptes utilisateurs

– De garantir la sécurité des données et du système.• Notion de droits d’accès

Page 21: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 21

1ère étape : connexion• Le premier écran que l’on voit sous Unix permet de se connecter

(« log in »). Son rôle : identifier l’utilisateur et ouvrir sa session.

• Une authentification = couple (login/password)

Exemple de login:login: quetier

Password: ********

Généralement votre nom

Un mot de passe COMPLIQUÉ!

Page 22: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 22

authentification (login/password) (1/3)

• Préalable obligatoire: avoir un compte

• Par défaut, il existe toujours un compte spécial: root – root = super-utilisateur

– C’est l’administrateur du système, il a tous les droits, il peut effectuer toutes les opérations de maintenance, mises à jour, et installations de produits...

– Généralement, vous ne connaissez pas son mot de passe (sauf s’il s’agit de votre ordinateur installé par vos soin)

=> Il faut généralement aller voir l’administrateur système pour obtenir un compte utilisateur.

Page 23: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 23

authentification (login/password) (2/3)

Connexion en 6 étapes:

1 Demande du login: login: quetier

2 Demande du mot de passe:

Password: -m0nm0d3Pa#,

3 Cryptage du mot de passe (algorithme MD5 ou autre) : -m0nm0d3Pa#, -> NWI0nnniSjo59

Page 24: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 24

4 Comparaison de la chaîne cryptée avec le mot de passe crypté mémorisé quelque part sur le disque lors de l'ouverture du compte par root ou du dernier changement de mot de passe fait par l’utilisateur.

exemple de compte (ligne du fichier /etc/shadow) : quetier:$1$b5O1vEF9$azeqEEncTwTjBywt/N6BN/:13626:0:99999:7:::

5 Comparaison des deux chaînes de caractères, et si elles sont identiques, c’est bon ; sinon re-demande de login.

6 Un environnement graphique est lancé (KDE, Gnome, etc.)

authentification (login/password) (3/3)

Page 25: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 25

2ème étape: accès aux ressources• Via l’interface graphique

– De nombreux outils d’administration existent– Plus facile mais moins proche de la machine

• Via un terminal– Un terminal donne accès à un shell ;– Le shell est un interpréteur de commandes qui passe

son temps à attendre qu'on lui donne quelque chose à faire (via le clavier);

– Le shell permet d'accéder directement ou indirectement aux ressources de la machine (disque, périphériques) via des commandes;

– Intérêt: plus puissant / modulaire / rapide / universel

=> Au cours de ce module, on présentera les principes et les commandes

Page 26: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 26

Shell– Pendant qu'il attend, le shell affiche un prompt pour montrer

qu'il est prêt a recevoir une commande;

– Il existe plusieurs shells, parmi les plus connus: sh, csh, ksh, tcsh, bash... Chacun avec leurs points forts et leurs points faibles.

login@nomordi:chemin$

Page 27: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 27

Syntaxe d’une commande

• La syntaxe générale d'une commande est de la forme: commande [option(s)] [argument(s)]

• Une commande permet d’agir sur le système, au sens large – ex : administration, lancement de programme, ...

• Une commande peut (ou non) avoir des options et/ou arguments.exemples: quetier@laptiptop ~ % logout

… <clos la session du terminal> quetier@laptiptop ~ % ls -la

… <liste le contenu du répertoire courant avec détails et fichiers cachés>

Page 28: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 28

Exemple 1 : uname• uname permet d’afficher des informations sur la machine• L’option « -a » permet de demander un affichage détaillé

Exemples:

quetier@laptiptop:~$ uname -aLinux laptiptop 2.6.20-16-generic #2 SMP Thu Jun 7 20:19:32 UTC 2007 i686 GNU/Linux

acces*/users/archi/quetier >uname -aLinux acces 2.4.28 #3 SMP Mon May 9 16:09:55 CEST 2005 i686 GNU/Linux

lri7-236:thomasherault 09:07$ uname -aDarwin lri7-236.lri.fr 8.10.1 Darwin Kernel Version 8.10.1: Wed May 23 16:33:00 PDT 2007; root:xnu-792.22.5~1/RELEASE_I386 i386 i386

Page 29: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 29

Exemple 2 : man

prague ~ % man unameReformatting page. Wait... Done

User Commandsuname(1)

NAMEuname - print name of current system

SYNOPSISuname [ -aimnprsvX ]

DESCRIPTIONThe uname utility prints information about the current system on the standard output. When options are…

OPTIONSThe following options are supported:

-a Print basic information currently available from the system(…)

• man (=manual) permet d’afficher l’aide sur une commandeExemple:

La commande

ultime

Page 30: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 30

5. Système de fichiers

Page 31: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 31

Stockage des fichiers

• Périphériques de stockage– disques durs, cd-roms, dvd, bandes, ...

– Permettent de stocker (principalement) des fichiers

• Disques durs, qu’est ce que c’est?– Un ensemble de blocs de même taille (p.ex. 512 octets) chacun

référencé par un numéro

– Les disques durs ne connaissent pas la notion de fichiers

• Un fichier, qu’est ce que c’est?– Suite d’octets représentant des données (programme, texte,

musique, etc.)

Page 32: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 32

Le système de fichiers (1)• Rôle principal :

– Stocke et organise les fichiers sur les périphériques de stockage – Du point de vue de l’utilisateur: organise les fichiers dans des répertoires

• Métaphore : – organiser des « feuilles » dans des « classeurs »– Un classeur peut contenir une ou plusieurs feuilles ou classeurs

Repertoire1

Repertoire2

Repertoire3

fichier2

Repertoire4

fichier1

fichier3

/

Page 33: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 33

Le système de fichiers (2)• Le système réserve une place pour

– Les méta-données : • Caractéristiques du système de fichier

• Caractéristiques de chaque fichier (localisation, type, droits, …)

• État des blocs (libre ou alloué)

• Nombre de fichiers

– Les données : fichiers et répertoires effectivement stockés• Reparties en clusters sur le disque (un cluster regroupe plusieurs blocs)

• Le système de fichier offre– Des services de base

• Ouverture, création, écriture, lecture, déplacement, fermeture, suppression, modification des fichiers et répertoires;

– Des services supplémentaires • Changements des droits, verrouillage, quota, liens, etc.

=> En pratique, plusieurs systèmes de fichiers sont disponibles (Ext3, FAT32, HFS, etc.)

Page 34: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 34

Référencement dans l’arborescence• chemin absolu:

– Commence par un « / »– chemin donné à partir de la racine– exemple: /Repertoire1/

• répertoire courant: – « . » : endroit ou l'on se trouve

• répertoire père du répertoire courant: – « .. » : répertoire contenant le répertoire courant– Repertoire1 est le père de Repertoire2

• chemin relatif– Toujours p/r au répertoire courant. – Exemple: Depuis Repertoire4, ../../Repertoire2

donne le chemin relatif de Repertoire2– Note: en absolu, cela correspond à

/Repertoire1/Repertoire2

• Répertoire « home » – « ~ »– c'est l'endroit ou ou le shell est lancé lorsque la phase

d'authentification est terminée.

Repertoire1

Repertoire2

Repertoire3

fichier2

Repertoire4

fichier1

fichier3

/

Page 35: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 35

Commandes : arborescence• Changement de répertoire?

– Commande cd– exemples:

cd ~cd /Repertoire1/Repertoire2cd ../../

• Ou suis-je ?– Commande pwd– exemple:

cartan ~ %pwd/users/sys/gemmerle

• Qu’y a t'il ici ou la? – Commande ls– exemple:

lsls -lals /Repertoire1

Repertoire1

Repertoire2

Repertoire3

fichier2

Repertoire4

fichier1

fichier3

/

Page 36: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 36

Commandes sur répertoires

• Manipulation de répertoire– cd : se déplace vers un répertoire cible (change dir.)

– pwd : donne l’emplacement courant

– ls : donne le contenu du répertoire• « ls -a » => affiche aussi les fichiers cachés

– mkdir : crée un répertoire (make dir.)

– rmdir : efface un répertoire vide (remove dir.)

Page 37: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 37

Commandes sur fichiers

• Manipulation de fichiers– cat : liste le contenu d’un fichier

– rm : efface un fichier (remove)

– cp : copie un fichier d’un emplacement à un autre (copy)

– mv : deplace un fichier d’un emplacement à un autre (move)

– ln : crée un lien vers un fichier• « ln -s repertoireAlier nomdulien »

Page 38: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 38

Commandes sur disques• df : donne taux d’occupation d’un disque

prague ~ % df -k Filesystem kbytes used avail capacity Mounted on/dev/dsk/c0t3d0s0 192807 29877 143650 18% //dev/dsk/c0t3d0s1 962582 601649 303179 67% /usr/dev/dsk/c0t3d0s3 96031 48279 38149 56% /var/dev/dsk/c0t3d0s5 192807 411 173116 1% /tmp/dev/dsk/c0t4d0s3 4124422 3636899 446279 90% /global/new-binantares2:/global/solaris 6278120 5575282 640057 90% /local/biniecn

• du : place occupée (ATTENTION à l’unité) prague /usr % du -k bin include kernel lib

26527 bin 6120 include 1770 kernel 90326 lib

Ou encore, option « -h » : « human readable»

Page 39: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 39

Arborescence typique sous Unix

bin lib etc tmp usr dev varhome lost+found

bin lib man include spool adm log

mail printer

Comment garantir l’intégrité de tout ça…? => les droits

Page 40: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 40

Droits d'accès (1)• Constat

– Chaque utilisateur à un répertoire personnel– Le disque contient aussi des données système Comment assurer la protection des données?

• Notions de droits d’accès– Trois niveaux : propriétaire (User) ; groupe (Group) ; autre (Other)– Trois options : lecture (Read), ecriture (Write), exécution (eXecute)– Options spéciales : setUID, setGID, sticky– La commande « ls -l » permet de voir les droits

prague ~ % ls -la /etc/passwd-rwxr-xr-- root other 311 Aug 10 2006 /etc/passwd

=> « Le fichier passwd dans le répertoire /etc peut être lu/modifié/exécuter par le super-utilisateur, lu et exécuté par les membres du groupe other et juste lu par tous les autres utilisateurs. »

Page 41: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 41

Droits d'accès (2)- Exemples :

- « -rwxrwxrwx »- « drwx______ »- « -rwxr_xr_x »- « -rw_r__r__ »

- Interprétation :- type du nœud [1 caractère]

- « - » : fichier, « d » : répertoire, « l » : lien

- droits du propriétaire / « user » [3 caractères] - read/write/execute

- droits du groupe / « group » [3 caractères] - read/write/execute

- droits des autres / « other » [3 caractères] - read/write/execute

Page 42: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 42

Commandes : Modification des droits (1/2)

• La commande: chmod (change mode)

• Première méthode: numérique– on considère « rwx » comme un nombre binaire

• exemples: – rwx => 7

– r-x => 5

– rw- => 6

– --x => 1

• Exemple: – pour mettre les droits rwxr_xr__ sur /etc/passwd :

• « chmod 754 /etc/passwd »

Page 43: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 43

Commandes : Modification des droits (2/2)

• Deuxième méthode: u: représente le propriétaire (user) g: représente le group o: représente les autres a: représente tout le monde: (u,g et o) +: représente la permission -: représente l'interdiction r: read permission w: write permission x: execute permission

pour l'exemple précédent: chmod a+r,u+w,u+x,g-w,g+x,o-w,o-x /etc/passwd

• Règle générale: – La première méthode pour fixer des droits initiaux, la deuxième pour

modifier.

Page 44: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 44

Commandes sur les droits d’un nœud

• Chown– changer le propriétaire d'un fichier

• Chgrp– changer le groupe d'un fichier

• Newgrp (pas très utile)– passer d'un groupe à un autre lorsque un utilisateur

appartient à plusieurs groupes (attention différences entre SYSV et BSD).

Page 45: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 45

6. Les Processus

Page 46: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 46

Processus (1)

• Un Unix est une machine généralement pseudo multi-taches - Chaque tache est appelée processus - le processeur s'occupe tour a tour d'exécuter une partie d’un processus, durant un temps donné (quantum).

• Au démarrage de la machine, un processus père de tout le monde est lance: init (numéro 1).

• A partir des informations contenues sur le disque de boot le processus init lance d'autres processus pour mettre en route les services disponibles sur la machine.

Lexique : CPU (Central Processing Unit)

Page 47: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 47

Processus• « Processus » :

– Unix est un système multi-tâche préemptif– Un processus est une abstraction d’un programme en cours

d’exécution• Lié à la notion de temps partagé :

– Ordonnancement / scheduler ; politique d’ordonnancement Par tourniquet / priorité / durée variable (quantum diff. selon processus)

– Context switching entre processus (sur interruption)

– Un processus c’est: programme + espace mémoire ( + d'autres ressoussorces)

– Un processus à plusieurs états possibles

nouveau en exécution

prêt

stoppé

En attente (suspendu)terminé

Page 48: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 48

Processus (2) : caractéristiques• Un processus est identifié par un numéro unique:

– « PID » : Processus IDentifier • Il est attribué au lancement du processus• Il est unique pour la session• Il peut être différent d’une session à l’autre• Exemple : 4134, 14, etc.

• Arborescence de processus– Notion de filiation entre processus

– Le processus « init » est le seul sans père– Un shell est un processus, dont le père est la session– Tous programmes lancés depuis un shell à (par défaut) celui-ci pour père

• Priorité des processus– La priorité d’un processus varie entre -19 (prioritaire) et +20 (non prioritaire)– Cela détermine le temps processeur alloué à chaque processus

Page 49: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 49

Processus: lancement• <commande>

– on récupère la main une fois que c'est fini

• <commande_1> ; <commande_2>; ... ; <commande_i>– les commandes sont exécutées séquentiellement

• (<commande>)– la commande est exécutée par un sous-processus– exemple:

cd /etc/src (cd /var/yp ; make) pwd -> /etc/src

• commande & – commande mise en tache de fond (i.e. détachée du terminal qui la lance)– exemple: «  emacs & » – On peut faire la même chose avec :

• « emacs » => ctrl+Z => bg

Page 50: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 50

Interface d’un processus

• Tout programme Unix, dès son lancement, possède 3 fichiers ouverts :– L’entrée standard (stdin ou fichier &0)

– La sortie standard (stdout ou fichier &1)

– La sortie erreur (stderr ou fichier &2)

processusstdin

stdout

stderr

Page 51: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 51

Processus: redirections et comm. (1/2)

• Il est possible de rediriger les E/S depuis/vers des fichiers…– Opérateurs de redirection : <, >, >>, 2>

– Exemple : « ls -l > contenudufichier.txt »

• Opérateurs de redirections :– commande > <fichier>

• la sortie standard est redirigée dans <fichier> (créé ou écrasé)

• Exemple: « ls -R / > resultat.txt »

– commande >> <fichier>• la sortie standard est redirigée et concaténée à <fichier>

– commande < <fichier>• l'entrée standard est <fichier>• Exemple : deux manières de faire la même chose

$ rm -i montexte.txt rm: remove montexte.txt (yes/no)? Y

$ echo y > pipo $ rm -i montexte.txt < pipo

Page 52: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 52

Processus: redirections et comm. (2/2)

• … ou depuis/vers d’autres programmes– Notion de « pipes » : |– Commande_1 | commande_2 | …... | commande_i

• la sortie de la commande_1 est l'entrée de la commande_2… etc.• exemple:

« ls -R / | more »« ls -l | grep monfichier.txt »

Page 53: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 53

Commandes de consultation des processus (1)

• Commande « uptime »– Statistiques générales sur le fonctionnement du système– Exemple

prague ~ % uptime 10:58am up 82 day(s), 1:02, 0 users, load average: 0.02, 0.01, 0.02

Page 54: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 54

Commandes de consultation des processus (2)

• Commande « ps »– Donne les processus qui sont actuellement lancés

– Exemple d’options:• ps -aux (SunOS 4, Linux)

• ps -edalf (Solaris, SGI, Linux)

– Exemple:Prague ~ %ps -aux

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

8 S root 1 0 0 41 20 f5985848 177 f5985a70 Sep 14 ? 0:11 /etc/init -

8 S root 207 1 0 41 20 f6060150 533 f5d0577a Sep 14 ? 0:00 sendmail

8 O root 24848 2441 1 61 20 f60c5538 222 10:46:12 pts/0 0:00 ps -edalf

8 S bredeche 24840 1 1 41 20 f72d4880 995 f6a9ab82 10:46:01 ? 0:00 xterm

8 S bredeche 24841 2440 1 51 20 f6f18740 576 f6f18968 10:46:03 pts/0 0:00 sh

8 S gemmerle 24841 2440 1 51 20 f6f18740 576 f6f18968 10:46:03 pts/0 0:00 xterm

Page 55: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 55

Commandes de consultation des processus (3)

• Commande « top »– Permet de connaître en temps réel les processus lancés et la charge de la

machine

– Exemple:top - 16:43:32 up 4:00, 5 users, load average: 0.10, 0.21, 0.21

Tasks: 131 total, 2 running, 129 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.3%us, 0.2%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.2%hi, 0.3%si, 0.0%st

Mem: 2074688k total, 1172368k used, 902320k free, 116912k buffers

Swap: 2345448k total, 0k used, 2345448k free, 738136k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

5363 root 15 0 78900 51m 12m S 1 2.6 1:09.59 Xorg

6078 quetier 16 0 35956 11m 8928 S 0 0.6 0:29.76 sensors-applet

11793 quetier 15 0 2320 1176 880 R 0 0.1 0:00.28 top

1 root 15 0 2908 1848 524 S 0 0.1 0:02.30 init

2 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0

3 root 34 19 0 0 0 S 0 0.0 0:00.12 ksoftirqd/0

4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0

Page 56: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 56

Commandes d’action sur les processus (1)

• Commande « kill »– envoi un signal a un processus, ce signal peut être:

• d'arrêt, de reprise, d'autodestruction, de destruction, de mise à jour (si cela a été prévu dans la programmation du processus).

– Exemples: • kill -s STOP pid

• kill -s CONT pid

• kill -s KILL pid …OU… kill -9 pid

– Liste des signaux possibles: « kill –l » (lettre l en minuscule)

Page 57: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 57

Commandes d’action sur les processus (2)

• Commandes « nice » (et « renice ») – Gestion de la priorité d'un processus

– Valeur:• Par défaut, 0

• Comprise entre -20 et 19

• Plus la valeur est petite, plus le processus est prioritaire

• Seul le super-utilisateur peut mettre des valeurs négatives

– Exemple• nice -n +5 <commande>

• renice -n +5 <noPID>

Page 58: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 58

Quelques processus sous Linux

init-+-atalkd |-automount |-crond |-inetd |-rpc.statd |-sendmail |-syslogd |-xdm-+-[xdm---Xsession---.xsession---xterm---. xsession-+-twm | | |-xclock] | | |-xmultibiff] | | `-xterm] | `-xdm---Xsession---.xsession-+-kbgndwm | |-kfm | |-kpanel | |-krootwm | `-kwm |-xfs `-ypbind---ypbind

Page 59: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 59

7. Notions de réseaux

Page 60: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 60

Adresses IP et InternetDe la même manière qu'une adresse postale comporte un pays

(par défaut le pays ou la lettre a été postée), une ville, une rue, un numéro.

Pour repérer un machine sur internet, il faut un nom de machine et un nom de domaine.

Exemples:

acces.lri.fr -> domaine=lri.fr

ftp.inria.fr -> domaine=inria.fr

www.pagesjaunes.fr -> domaine=pagesjaunes.fr

Page 61: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 61

Numéros IP (Internet Protocol)Une adresse IPv4 est de la forme:

XXX.YYY.ZZZ.TTToù ??? est un nb entre 0 et 255.

exemples:

acces.lri.fr -> 129.175.15.6

ftp.inria.fr -> 192.93.2.6

www.google.fr -> 216.239.59.104 ou 216.239.59.147 ou ...

Remarques: * une adresse => plusieurs machines

* Un domaine => plages d'adresses éventuellement non contiguës

Page 62: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 62

Nslookup: exemples

quetier@laptiptop:~$ nslookup www.google.frServer: 129.175.3.2Address: 129.175.3.2#53

Non-authoritative answer:www.google.fr canonical name = www.google.com.www.google.com canonical name = www.l.google.com.Name: www.l.google.comAddress: 216.239.59.147Name: www.l.google.comAddress: 216.239.59.99Name: www.l.google.comAddress: 216.239.59.103Name: www.l.google.comAddress: 216.239.59.104

Page 63: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 63

Notion de ports et de démons

On peut voir les ports comme des oreilles

20 ftp

22 ssh

23 telnet

25 smtp

...

Démon ftp

Démon ssh

Demon telnet

Démon mail

Page 64: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 64

Démon (daemon)

Fonctionnement client-serveur: - un serveur qui attend des requêtes d ’éventuels clients - un client qui émet des requêtes vers un serveur

- Un démon est un programme qui tourne en fond de tache(background) qui attend des requêtes.

- Un démon est un serveur dans un modèle client-serveur.- On communique avec un démon via le(s) numéro(s) de port(s) qu'il

'écoute'.

exemple: httpd qui est de démon serveur de pages WWW 'écoute' le port 80 et répond

aux requêtes http qui lui sont soumises (s'il a le droit :)

Page 65: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 65

inetd

Un démon c'est bien mais ça utilise de la mémoire et du CPU.

=> inetd

c'est un démon dont le rôle est d'activer le service correspondant a un requête donnée.

exemple:

Sur une machine de faible puissance, il est possible de 'déclencher' l'activation de httpd seulement lorsque qu'une requête WWW est soumise a la machine.

Page 66: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 66

/etc/inetd.conf# Configuration file for inetd(1M). See inetd.conf(4).# Ftp and telnet are standard Internet services.ftp stream tcp nowait root /usr/sbin/tcpd in.ftpdtelnet stream tcp nowait root /usr/sbin/tcpd in.telnetd# Shell, login, exec, comsat and talk are BSD protocols.shell stream tcp nowait root /usr/sbin/tcpd in.rshdlogin stream tcp nowait root /usr/sbin/tcpd in.rlogindexec stream tcp nowait root /usr/sbin/tcpd in.rexecd# Tftp service is provided primarily for booting. Most sites run thistftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot# The rusers service gives out user information. Sites concerned# with security may choose to disable it.rusersd/2-3 tli rpc/datagram_v,circuit_v wait root \ /usr/lib/netsvc/rusers/rpc.rusersd rpc.rusersd

Page 67: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 67

Le fichier: /etc/services

#ident "@(#)services 1.20 98/07/08 SMI" /* SVr4.0 1.8 */# Network services, Internet styleftp-data 20/tcpftp 21/tcpssh 22/tcp # SSH Remote Login Protocolssh 22/udp # SSH Remote Login Protocoltelnet 23/tcpsmtp 25/tcp mailtftp 69/udpwww 80/tcp http # WorldWideWeb HTTPpop3 110/tcp pop-3 # POP version 3pop3 110/udp pop-3ntp 123/udp # Network Time Protocolimap2 143/tcp imap # Interim Mail Access Proto v2imap2 143/udp imapsnmp 161/udp # Simple Net Mgmt Protoz3950 210/tcp wais # NISO Z39.50 databasez3950 210/udp waisimap3 220/tcp # Interactive Mail Accessimap3 220/udp # Protocol v3...

Page 68: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 68

netstat -a

quetier@laptiptop:~$ netstat -aConnexions Internet actives (serveurs et établies)Proto Recv-Q Send-Q Adresse locale Adresse distante Etat tcp 0 0 localhost:2208 *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 localhost:2207 *:* LISTEN tcp6 0 0 *:ssh *:* LISTEN udp 0 0 *:32768 *:* udp 0 0 *:bootpc *:* udp 0 0 *:mdns *:*

Page 69: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 69

telnet

TELNET est un protocole de communication possible entre deux machines. telnet est une application qui permet de se connecter sur une autre machine.

exemple: loria ~ %telnet cartan.iecn.u-nancy.fr Trying 193.50.42.9... Connected to cartan.iecn.u-nancy.fr. Escape character is '^]'. SunOS 5.7 login: gemmerle Password: ********** Last login: Mon Nov 20 10:54:48 from craffe.loria.fr Sun Microsystems Inc. SunOS 5.7 Generic October 1998 cartan ~ %

Page 70: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 70

rlogin

rlogin est une application qui permet de se connecter sur une autre machine.

Elle offre en plus la possibilité de ne pas répéter la procédure d'identification.

Mécanismes pour éviter la procédure d'identification:

- Au niveau de l'utilisateur: $HOME/.rhosts

liste privée d ’item de la forme: nom de machine/nom de login

exemple:

cartan ~ %more .rhosts

loria.loria.fr

- Au niveau de la machine: /etc/hosts.equiv

Page 71: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 71

ssh

ssh - secure shell client (remote login program)

L'idée:

- chaque machine a une bi-clés (Clé publique/Clé privée)

- échange a l'aide des bi-clés d'une clef de session

- codage de la session a l'aide de la clef négociée

Page 72: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 72

ftp/sftp (file transfer program)

Exemple: loria ~ %ftp cartan.iecn.u-nancy.fr Connected to cartan.iecn.u-nancy.fr. 220 cartan.iecn.u-nancy.fr FTP server (SunOS 5.7) ready. Name (cartan.iecn.u-nancy.fr:gemmerle): gemmerle 331 Password required for gemmerle. Password: 230 User gemmerle logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> ? Commands may be abbreviated. Commands are: mget put mkdir pwd exit get mput bye help cd user lcd open ls ftp> get .cshrc local: .cshrc remote: .cshrc 200 PORT command successful. 150 Binary data connection for .cshrc (152.81.144.12,1403) (2 bytes). 226 Binary Transfer complete. 2 bytes received in 0.0204 secs (0.096 Kbytes/sec)

Version sécurisée : SFTP

Note: commande ‘bi’ pour un transfert

binaire si vous êtes sous windows.

Page 73: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 73

scp : copie sécurisée

quetier@laptiptop:~$ scp [email protected]:/etc/passwd /tmpThe authenticity of host 'vs23.lri.fr (129.175.7.55)' can't be established.RSA key fingerprint is bc:ff:c0:36:de:0d:65:c7:3f:c1:5e:0e:d0:3b:b1:23.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'vs23.lri.fr,129.175.7.55' (RSA) to the list of known hosts.Password: passwd 100% 1758 1.7KB/s 00:00

quetier@laptiptop:~$ scp /tmp/passwd root@vs23:/tmp/sauv_passwdWarning: Permanently added 'vs23' (RSA) to the list of known hosts.Password: passwd 100% 1758 1.7KB/s 00:00

Page 74: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 74

8. Programmation sous Unix

Page 75: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 75

Programmation sous Unix

• Langages interprétés– Langage de Shell : sh, tcsh, ksh, zsh, bash

– Langage de Script : perl, python, …

• Langages compilés– C / C++

– Java (machine virtuelle)

– Etc.

Page 76: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 76

sh

!# /bin/shTOTO='bonjour je suis sh'echo $TOTO

Page 77: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 77

python

• http://fr.wikipedia.org/wiki/Python_(langage)– Python est un langage de programmation interprété, multi-

paradigme. Il autorise la programmation impérative structurée, orientée objet, et fonctionnelle. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions.

Page 78: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 78

9. Outils pour la programmation

Page 79: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 79

Quelques outils

• Editeurs de texte : vi, emacs, jedit, nedit, kate, eclipse, …

• Make

• Gestionnaires de versions : svn, subversion

• Compilateurs : gcc, javac, ocamlc

Page 80: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 80

Make : construire un exécutable

• Make permet de reconstruire automatiquement vos programmes dés que le code source a été modifié.

• Make est organisé sous forme de règles de la forme :TARGET: DEPEND1 DEPEND2 ...<tab> COMMAND1<tab> COMMAND2

• Cet règle permet de construite TARGET (i.e. La cible) en fonction des fichiers dont celle-ci dépend (cf. DEPEND).

• Si vous tapez make dans un repertoire contenant un fichier Makefile, alors la première cible définie dans le Makefile sera construite. Vous pouvez choisir la cible à construire en tapant make X (avec X, le nom de votre cible).

Page 81: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 81

Make : un exemple simplefichier Makefile

all : montexte.ps montexte.html

montexte.html : montexte.tex latex2html montexte.texmontexte.dvi : montexte.tex latex $<montexte.ps : montexte.dvi dvips -o $@ $<clean : rm -f montexte.ps montexte.dvi montexte.html

$@ : la cible --- $< : la (première) source --- $^ : toutes les sources

Page 82: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 82

Make : un exemple

# This is an example Makefile.

JC = javacJE = javaJAVAFLAGS = -server

EXEC = monprogramme.class

monprogramme.class: monprogramme.java $(JC) monprogramme.java

%.class: %.java $(JC) $(JAVAFLAGS) $<

run: monprogramme.class java monprogramme

hello: echo 'hello!'

all: monprog hello

clean: rm -f $(EXEC)

cleanall: rm -f *.class

make monprogramme.classmake monprog.classmake allmake cleanmake cleanallmake hello

• Gère les dépendances (i.e. n’exécute une nouvelle entrée que si nécessaire)

• Ne pas oublier les tabulations!

Page 83: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 83

CVS - système de contrôle de version

CVS est un système de gestion des sources permettant à un groupe gens de travailler ensemble sur le même code (de programme).

• Idée de base : un dépôt centralisé (REPOSITORY) qui contient toutes les informations sur les différentes modifications effectuées par les différentes personnes intervenant sur le projet. Ces «  traces » sont stockées de manière efficace de manière à ne pas prendre trop de place (on a un log des modifications, pas des images!)

• Chacun peut éditer ses copies locales des fichiers partagés; une fois l’édition terminée, on peut sauver ceux-ci pour qu’ils soient enregistré au niveau de la copie centrale.

• Quelques commandes utiles:– setenv CVSROOT XXX, où XXX est un répertoire accessible en ecriture qui va servir à héberger les informations de votre groupe. Tous les membres du groupe doivent référencer CVSROOT sur le même repertoire!

Page 84: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 84

CVS : quelques commandescvs init

Initialise votre repertoire local pour recevoir les fichiers du repository.

cvs checkout XXX Récupère la dernière copie de XXX (‘.’ pour tous les fichiers) en local.

cvs add XXXAjoute un fichier ou répertoire XXX à l’ensemble des fichiers/répertoires (le “repository”) que vous partagez avec le groupe.

cvs commit XXXSauvegarde vos changements dans le repository. Si qqun à entre temps déja enregistré (= commit) une version, vous devez d’abord exécuter cvs update.

cvs update XXXmet à jour votre copie locale du fichier ou du répertoire XXX (en fonction du dernier commit en date). Cette commande permet de savoir si vos propres changements rentrent en conflits avec ceux commités entre temps par un tiers.

Page 85: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 85

Successeur de CVS : Subversion

• Commande « svn »

• Toutes les options récentes de CVS

• Commande de renommage de fichiers/répertoires

• Moteur de gestion de versions plus fiable

Page 86: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 86

En cas de problème :

N’oubliez pas la commande « man »

N'oubliez pas non plus google

fin du cours L3-Unix (5h)

“man unix”

Page 87: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 87

ANNEXES

Page 88: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 88

Caractères spéciaux

• * remplace une chaîne de caractères quelconques

• ? remplace un caractère quelconque

• [av] remplace a ou v

• [a-v] remplace les lettres comprises entre a et v

• $var variable shell de nom var

Page 89: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 89

Montage disque à distance (NFS)

Exemple:

loria

/tmp/toto

share -o rw=cartan /tmp/toto

cartan

mount loria:/tmp/toto /tmp/toto

mount: loria:/tmp/toto: Permission denied

share -o rw=cartan /tmp/toto

mount loria:/tmp/toto /tmp/toto loria:/tmp/toto et cartan:/tmp/toto représentent le même endroit disque

Pour annuler la manip: umount /tmp/totounshare /tmp/toto

Page 90: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 90

Partage disque

automount install automatic mount points

Pour cela automount a besoin de 'maps‘. La map par défaut est: /etc/auto_master ou /etc/auto.master

exemple: cartan ~ %more /etc/auto_master # # Map montage # /local local_map /users users_map

=> existence des fichiers: /etc/local_map /etc/users_map

Page 91: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 91

Les pipes

• Un pipe est un fichier temporaire, nommé ou non, utilisé par 2 groupe de programmes en même temps : les producteur et les consommateurs.Habituellement, il n’y a qu’un producteur et un consommateur.

• Le pipe le plus commun d’Unix est symbolisé par « | ». Dans tout shell, ce symbole utilise la syntaxe suivante :commande1 | commande2La sortie standard de la commande1 est écrite dans un pipe sans nom; l’entrée standard de la commande2 lit dans ce même pipe.

Page 92: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 92

Les pipes : c’est quoi ?

• C’est un fichier FIFO d’une longueur maximale variable (de 512 à 16K), avec 2 descripteurs:* Un pour l’écriture, garantie atomique; non bloquante tant que la taille maximale n’est pas atteinte,* Un pour la lecture, garantie atomique, bloquante si le fichier est vide.

• En fait, c’est bien plus complexe; plusieurs implantations existent…

Page 93: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 93

Redirection des E/S (sh)

• Com X> fichier : * X = 1 ou absent : la sortie standard est écrite dans file;

* X = 2 : id avec la sortie erreur.• Com X>> fichier : écrit à la fin de fichier.• Com <> fichier : les E/S se font dans fichier.• Com < fichier : l’entrée standard est lue dans fichier.• Com << MOT : toutes les lignes suivantes du shell

jusqu’à MOT constitueront un buffer qui peut être lu par com.

Page 94: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 94

Mixage des sorties

• 2>&1 : redirige la sortie erreur sur la sortie standard. L’évaluation est de gauche à droite; pour mettre toutes les sorties d’un programme dans le même fichier :com1 >file 2>&1 et non com1 2>&1 >file

• La commande nohup rend une commande insensible aux signaux de fin du terminal, et détourne ses E/S (utile en tâche de fond). Elle peut être émulée parcom1 >&- <&- 2>&1Cela ferme les 3 E/S de la commande.N’étant plus relié au shell, elle ne meurt pas quand le shell est arreté.

Page 95: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 95

Suspension d'exécution d'une tache• commande &

commande mise en tache de fond (background) exemple: emacs &

• commande Ctrl Z: la tache est suspendue• bg pour la mettre en fond de tache• jobs pour connaitre la liste des taches de fond et leur numéro• %com la tache dont le nom de commande commence par com

est réactivée• %numéro pour la reprendre la tache {numéro}• %+ pour la reprendre la tache marquée + (courante)• %- pour la reprendre la tache marque - (précédent la courante)

Page 96: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 96

vi (éditeur standard unix)

• Disponible sur tous les Unix• Deux modes:

- mode commande - mode insertion

• Pour entrer en mode insertion: i ou a• Pour sortir du mode insertion: Esc• En mode commande, h (<), l(>), j(V), k(^), • eff. le caract.. sous le curseur, d efface la ligne, • :wq! pour sauver et sortir.

un peu barbare…

Page 97: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 97

Éditeur: emacs - xemacs (1/3)

;; This buffer is for notes you don't want to save, and for Lisp evaluation.

;; If you want to create a file, first visit that file with C-x C-f,

;; then enter the text in that file's own buffer.

--**-XEmacs: *scratch* (Lisp Interaction)----All---------------

Page 98: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 98

Éditeur: emacs - xemacs (2/3)

• A sa naissance, uniquement en mode texte maintenant, il existe

en mode graphique

• On a toujours la possibilité: [x]emacs -nw

• Cohabitation des modes commande et insertion grâce aux

touches Ctrl et Esc

• Séparation en deux de l'écran:

+ une grande fenêtre d'édition

+ une ligne de commande

• On effectue généralement une commande avec des séquences de

touches commençant par Esc ou Ctrl

Page 99: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 99

Éditeur: emacs - xemacs (3/3)• Pour se déplacer: Ctrl + p pour monter le curseur d'une ligne (previous)

Ctrl + n pour descendre le curseur d'une ligne (next) Ctrl + f pour avancer le curseur d'une case (forward) Ctrl + b pour reculer le curseur d'une case (backward) Ctrl + e pour aller a la fin de la ligne Ctrl + a pour aller au début de la ligne

• Utiles:Ctrl + x Ctrl + s: pour sauver le bufferCtrl + x Ctrl + c: pour sortir d'emacs

• Ca peut aiderCtrl + g quand on est plantéCtrl + l pour centrer sur la ligne en cours.

Page 100: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 100

Autres éditeurs

• Il existe beaucoup d’autres éditeurs, installés ou installables sur les machines Unix. En particulier, des éditeurs proches de l’érgonomie d’éditeur windows.Par exemple : Nedit, Kedit, jed, …

Page 101: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 101

Plusieurs shells : SH, TCSH, KSH, BASH

Dans ce qui suit: on utilisera sh, parce que:

• on le trouve partout;

• Bash (qui est très utilisé) est compatible

• avec les scripts SH

Page 102: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 102

Variables d'environnement prédéfinies

• HOME chemin d'accès au répertoire initial de l'utilisateur

• PATH suite de chemins d'accès aux répertoires des exécutables

• PS1 invite principale du shell en mode interpréteur

• PS2 invite secondaire du shell en mode programmation

• IFS séparateurs de champ des arguments

• MAIL chemin d'accès à la boite aux lettres utilisateur

• MAILCHECK intervalle en sec au bout duquel le mail est contrôlé

• TERM nom du type de terminal

Page 103: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 103

Variables utilisateur

• Déclaration variable=valeur

• Utilisation variable2=$variable

Page 104: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 104

Exportation d'une variable

• Le problème sur un exemple:

echo $TOTO TOTO='bonjour je suis sh' echo $TOTO bonjour je suis sh sh echo $TOTO (TOTO n'a pas été exporte)

[Ctrl+D] export TOTO sh echo $TOTO (TOTO a été exporté) bonjour je suis sh

Page 105: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 105

Variables de substitution prédéfinies

Exemple: toto.sh

#! /bin/sh

echo "$0 -> nom du script (pathname) "

echo "$1,$2,$3,$4 -> arguments (du 1er au n-ieme) "

echo "$# -> nombre d'arguments "

echo "$* -> liste de tous les arguments "

echo "$? -> code retourne par la derniere commande "

echo "$$ -> numero de processus de ce shell "

**************************************************

./toto.sh a ab abc abcd

./toto.sh -> nom du script (pathname)

a,ab,abc,abcd -> arguments (du 1er au n-ieme)

4 -> nombre d'arguments

a ab abc abcd -> liste de tous les arguments

0 -> code retourne par la derniere commande

4217 -> numero de processus de ce shell

Page 106: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 106

Quotage

• Rôle : le quotage est utilisé pour supprimer les fonctionnalités de certains caractères spéciaux du shell, dont les métacaractères.

• Méta-caractères: \ $ * ` " '

• Caractère d ’échappement: \ le caractère \ préserve la valeur littérale du caractère qui le suit

• Simples quotes '...' les caractères inclus entre 2 simples quotes ne sont pas évalués

• Doubles quotes "..."

les caractères inclus entre 2 doubles quotes conservent leur valeur à l'exception de $ ` et \.

• Exemple TOTO='bonjour ’ echo '$TOTO et ' "$TOTO" $TOTO et bonjour

Page 107: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 107

Commandes de test (1/5 )

test sur les fichiers: test -f fichier (existence de fichier) test -d répertoire (existence de répertoire) test -s fichier (existence du fichier et taille > 0) test -r fichier (existence du fichier et accessible lecture) test -w fichier (existence du fichier et accessible écriture) test -x fichier (existence du fichier et exécutable)

exemples: test -f /etc/passwd [ -f /etc/passwd ] [ ! -f /etc/passwd ]

Page 108: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 108

Commandes de test (2/5 )

test alphanumérique test "$str1" = "chaine1" test "$str1" != "chaine1 "

exemples:

toto='acd ’ test "acd" = "$toto" -> vrai [ "acd" = "$toto" ] -> vrai

Page 109: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 109

Commandes de test (3/5 )

test numérique n1 -eq n2 (égaux) n1 -ne n2 (non égaux) n1 -gt n2 (plus grand que) n1 -lt n2 (plus petit que) n1 -ge n2 (plus grand ou égal que) n1 -le n2 (plus petit ou égal que)

exemples: toto=3 [ 5 = "$toto" ] -> faux test 3 = "$toto" -> vrai [ 5 -gt "$toto" ] -> vrai [ 5 -lt "$toto" ] -> faux

Page 110: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 110

Commandes de test (4/5 )

Comparaisons booléennes

-z chaîne (vrai si la longueur de la chaîne est nulle)

-n chaîne (vrai si la longueur de la chaîne est non nulle)

Exemples:

toto='acd'

[ -z $toto ] -> faux

[ -n $toto ] -> vrai

Page 111: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 111

Commandes de test (5/5 )

Autres opérateurs ! (négation) -a (et) -o (ou)

Exemples: toto=3 [ ! 5 -lt "$toto" ] -> vrai [ \( 2 -lt "$toto" \) -a "$toto" -lt 5 ] -> vrai

Page 112: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 112

Instructions conditionnelles (1/2)

Condition simple: if then ... fi

exemple 1: toto.sh

#! /bin/sh

if test "$1" = "a" ; then

echo 'je suis dans le cas 1'

fi

***************

toto.sh a -> je suis dans le cas 1

toto.sh b c -> rien

exemple 2:

if [ ! -d Tmp ]; then mkdir Tmp ; fi

Page 113: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 113

Instructions conditionnelles (2/2) Exemple un peu plus compliqué

cat toto.sh

#! /bin/sh

if test "$1" = "a" ; then

echo 'je suis dans le cas: a ?'

elif test "$1" = "b" ; then

echo 'je suis dans le cas: b ?'

else if test "$2" = "a" ; then

echo 'je suis dans le cas: ? a'

fi

fi

toto.sh a

je suis dans le cas: a ?

toto.sh a b

je suis dans le cas: a ?

toto.sh b a

je suis dans le cas: b ?

toto.sh d a

je suis dans le cas: ? a

toto.sh d b

<- rien

Page 114: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 114

Arithmétique

Commande: expr

expr val1 opér val2

opér: +, -, *, /, %

Exemples:

compteur=`expr $compteur + 1`

compteur=`expr $compteur \* 2`

Peu performant : nécessite un sous-processus

Page 115: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 115

Instructions de boucle (1/3)

for variable [ in liste d'arguments ] do liste de commandes done

while commande do liste de commandes done

Page 116: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 116

Instructions de boucle (2/3) exemple boucle 1

#! /bin/sh

for i in a b c

do

echo $i

done

./toto.sh

a

b

c

Page 117: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 117

Instructions de boucle (3/3) exemple boucle 2

i=0

while test $i -le 5

do

i=`expr $i +1`

echo $i

done

./toto.sh

1

2

3

4

5

Page 118: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 118

Instructions d'aiguillage: case in ... esac

#! /bin/sh

case $1 in

'a') echo "je suis dans le cas: a" ;;

'b') echo "je suis dans le cas: b" ;;

'c') echo "je suis dans le cas: c" ;;

*) echo "je suis dans le cas: autres" ;;

esac

toto.sh a

je suis dans le cas: a

toto.sh b

je suis dans le cas: b

toto.sh c

je suis dans le cas: c

toto.sh d

je suis dans le cas: autres

toto.sh e

je suis dans le cas: autres

Page 119: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 119

cd . ; echo $?0*************************mkdir /pouet ; echo $?mkdir: Failed to make directory

"/pouet"; Permission denied2*************************cat toto.sh#! /bin/sh

case $1 in 'a') exit 1 ;; 'b') exit 2 ;; *) exit 3 ;;esac

***************************toto.sh a ; echo $?1toto.sh b ; echo $?2toto.sh c ; echo $?3

Code retourné par la dernière commande

Page 120: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 120

Expansion de commande

variable=`commande`

exemple:

MAINTENANT=`date`

echo $MAINTENANT

Thu Dec 14 17:01:52 MET 2000

Page 121: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 121

Expansion de paramètre (1/2)

variable=${var:-val} si var est définie ou non nulle alors $var

sinon val

exemple:

TEXTE='abc'

echo ${HOME:-TEXTE}

/home/nicolas

echo ${TEXTE2:-TEXTE}

TEXTE

echo $TEXTE2

il n’affiche rien

Page 122: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 122

Expansion de paramètre (2/2)

variable=${var:=val} si var est définie ou non nulle alors $var

sinon affecte val à var et affiche val.

exemple:

TEXTE='abc'

echo ${HOME:=TEXTE}

/home/nicolas

echo ${TEXTE2:=TEXTE}

TEXTE

echo $TEXTE2

TEXTE

Page 123: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 123

Entrer une chaîne: read REPONSE

cat toto.sh

#! /bin/sh

echo "Donner un nb d'annee "

read REPONSE

NBMOIS=`expr $REPONSE \* 12`

echo "Ca fait $NBMOIS mois"

toto.sh

Donner un nb d'annee

5

Ca fait 60 mois

Page 124: 03/09/07L3/unix1 Pratique dUnix introduction aux systèmes dexploitation de type Unix Licence L3 (S5) Benjamin Quétier ½ ATER, Université Paris-Sud XI

03/09/07 L3/unix 124

Fonctions

#!/bin/sh

usage()

{

echo "usage: $1 $2"

}

main()

{

if [ $# = 0 ]; then

usage `basename $0` "fichier";

exit 1

fi

ls -lsa $1

}

main $*

$ toto.sh

usage: toto.sh fichier

$ toto.sh /etc/passwd2 -rw-r--r-- 1 root other 311 Nov 29 1999 /etc/passwd