78
M1 EEAS Syst ` eme d’exploitation GNU/Linux UPS Syst ` eme d’exploitation GNU/Linux Plan du cours: I-Introduction II-Syst ` eme de fichiers III-Processus IV-Langage de Shell V-Compl ´ ements sur les commandes Jean-Michel ENJALBERT - [email protected], 2005/2006 –1–

Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux UPS

Systeme d’exploitation GNU/Linux

Plan du cours:

➽ I-Introduction

➽ II-Systeme de fichiers

➽ III-Processus

➽ IV-Langage de Shell

➽ V-Complements sur les commandes

Jean-Michel ENJALBERT - [email protected], 2005/2006 –1–

Page 2: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-Introduction

I-1 Roles d’un Systeme d’Exploitation

S.E.= ensemble d’outils logiciels permettant de gerer le fonctionnement d’un

ordinateur.

– fournit une interface entre les programmes utilisateurs et le materiel

– assure la gestion des ressources du systeme (processeur, memoire, clavier,

ecran, disques, imprimantes, etc..).

On distingue:

– le programme qui gere les ressources du systeme et les processus (le noyau)

– les outils logiciels associes au SE (compilateur, editeur de texte, commandes,

etc...).

Jean-Michel ENJALBERT - [email protected], 2005/2006 –2–

Page 3: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

Materiel

Noyau

Outils

Applications

Un systeme d’exploitation doit concilier:

– utilisation optimale des ressources (processeur, memoire, ...)

– facilite d’utilisation pour l’utilisateur

Jean-Michel ENJALBERT - [email protected], 2005/2006 –3–

Page 4: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-2 Concepts de base des SE

premiers ordinateurs (annees 50) ➯ une seule personne: programmeur et

operateur.

Ordinateurlecteur decartes

perforatrice

imprimante

sous utilisation des machines (tres couteuses) ➯ separation des taches de

programmation et d’utilisation.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –4–

Page 5: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

Apparition des bandes magnetiques: programme residant en memoire charge

d’enchaıner les taches: le moniteur.

Ordinateur

lecteur decartes

perforatrice

imprimante

lecteur/enreg.bandes

Notion de traitement par lots.

chargementbandes

Programmeurtravaux

Operateur moniteur UC

resultatsexecution

Inconvenient: separation du programmeur/utilisateur et de la machine.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –5–

Page 6: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

Evolution de la technique: decalage entre lenteur des entrees/sorties et rapidite de

l’unite centrale.

Concept de multi-programmation. Interruption des taches.

Principe: entrelacer les taches demandees au systeme pour ne pas bloquer l’UC

dans l’attente de la fin d’une operation d’E/S.

� �� �

� �� �

� � � � � �

� � � � � �

� � � � � �

� � � � � �P1 P2 P3 P4E/SE/S

P1 P2 P1 P2 P3 P4 P3 P4

Jean-Michel ENJALBERT - [email protected], 2005/2006 –6–

Page 7: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

Amelioration de la puissance des machines: concept de temps partage.

Commutations periodiques des taches.

Rapidite des commutations (linux:1ms) ➯ pseudo-parallellisme.

P1 P2 P3

P1 P2 P3 P4 P1 P3 P4P4 P1 P2 P3 P4 P1

P4

fin P1fin P3fin P2

Concepts utilises par tous les systemes d’exploitation modernes.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –7–

Page 8: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-3 Historique: de UNIX a GNU/LINUX

Naissance d’UNIX: 1969 (K. Thomson aux laboratoires Bell)

Objectif: disposer, sur un mini-ordinateur, d’un systeme d’exploitation puissant.

Ecrit quasi entierement en langage C en 1973 par D. Ritchie ➯ “invention” du

langage C.

➯ UNIX portable sur toute machine possedant un compilateur C.

1984, Richard STALLMAN: Creation de la Free Software Foundation (FSF) Projet

de developpement d’un systeme Unix entierement libre (projet GNU).

Developpement d’outils: un compilateur C (gcc), un editeur de texte (emacs), un

debogueur (gdb) etc.. Noyau (nom de code: hurd) en retard.

➯ en 1991, Linus Thorwald: noyau Unix: Linux.

Aujourd’hui (2005), GNU/Linux concurrent des UNIX commerciaux et de

Microsoft/Windows.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –8–

Page 9: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-4 Caracteristiques principales d’UNIX

I-4.1 Multi-plateformes

Ecrit en C ➯ Compilateur C disponible ➯ UNIX disponible.

➯ Systemes embarques (micro-controleurs)

➯ Ordinateurs personnels (PC et MAC)

➯ Stations de travail et serveurs.

I-4.2 Multi-taches

Ordinateur mono-processeur: une chose a la fois.

Multi-taches: utilisation de l’attente d’E/S (lentes) et temps partage: plusieurs taches

“ouvertes”. Pour l’utilisateur, identique a un systeme parallele.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –9–

Page 10: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-4.3 Multi-utilisateurs

UNIX concu pour permettre a plusieurs utilisateurs d’utiliser le meme systeme de

maniere securise

➯ Gestion des fichiers permettant de leur affecter un proprietaire et des droits

d’acces. Notion de groupe permettant de distinguer differentes categories

d’utilisateur.

➯ Multi-taches. Utilisation du systeme par plusieurs utilisateurs en meme temps

Chaque utilisateur execute ses taches sans perturber les taches des autres.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –10–

Page 11: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-4.4 Systeme de fichiers hierarchise

“en UNIX, tout est fichier”

➯ Fichier UNIX: chaıne de caracteres non structuree

➯ A tout fichier est associe un bloc d’informations (i-node) decrivant ses proprietes

identifie par un index unique.

➯ Designation d’un fichier fait par des fichiers particuliers: les repertoires. Un

repertoire est un fichier forme d’un ensemble de couples: (index, nom de fichier)

➯ Racine du systeme: repertoire sans nom d’index 2.

Contient des fichiers non-repertoires et/ou des repertoires L’ensemble forme

une arborescence dont les feuilles sont des fichiers non-repertoires ou des

repertoires vides.

➯ Peripheriques (clavier, souris, disques, etc...) sous UNIX: fichiers speciaux

integres dans l’arborescence.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –11–

Page 12: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-4.5 Gestion des processus

Processus: ensemble des programmes charges en memoire centrale en execution

ou en attente d’execution.

Geres par le noyau du SE (ordonnancement et allocation des ressources).

Processus initial: init. Cree des processus fils qui eux-meme...

Arborescence unique de processus.

Un processus est caracterise par un numero (ID). Il possede un espace memoire

propre.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –12–

Page 13: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-5 Utilisateur d’un systeme UNIX

I-5.1 Compte utilisateur

➯ cree par administrateur (utilisateur root).

➯ login: nom de l’utilisateur

➯ mot de passe: protection de l’acces

➯ repertoire personnel: repertoire /home/nom login. Fichiers personnels.

I-5.2 Processus de login

➯ Au demarrage du systeme, lancement du processus login: affichage d’un

message et attente de caracteres.

➯ Entree du nom de login et du mot de passe

➯ Verification de l’existence du compte et de la validite du mot de passe, puis

creation d’un processus de shell (interpreteur de commande)

Jean-Michel ENJALBERT - [email protected], 2005/2006 –13–

Page 14: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme d’exploitation GNU/Linux - Introduction UPS

I-5.3 Administration du systeme

UNIX: droits limites pour les utilisateurs (sur les fichiers et les processus).

Utilisateur particulier qui possede tous les droits: root. Administrateur du systeme.

➯ Creation de comptes utilisateurs

➯ Configuration du systeme

➯ Acces a tous les fichiers et a tous les processus.

➯ Peut detruire le systeme!

Jean-Michel ENJALBERT - [email protected], 2005/2006 –14–

Page 15: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-Systeme de fichiers

II-1 Differents types de fichiers

Fichier: chaıne de caracteres non structure + i-node.

– Fichiers ordinaires: Inclus fichiers ’textes’ et fichiers binaires.

– Fichiers speciaux: associes a des peripheriques. Ils sont places dans le

repertoire /dev et peuvent etre a acces par bloc ou par caractere.

– Repertoires: Fichiers qui permettent de referencer d’autres fichiers.

Repertoire: ➯ liste de couples (nom fichier, index i-node) qui permet d’acceder

a un fichier a partir de son nom. Deux entrees au moins: (. , son propre index) et

(.., l’index de son repertoire pere).

– Liens: Permet d’acceder a un meme fichier en utilisant des noms differents.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –15–

Page 16: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-2 L’arborescence des fichiers

Le systeme de fichiers UNIX se presente sous la forme d’une arborescence:

home

binmkdir

chmod

jme

/

projet.c

projet

Chemin absolu: chemin unique partant de la racine permettant de designer un

fichier donne.

Exemple sur la figure: /home/jme/projet.

Chemin relatif: chemin faisant reference a un repertoire de travail.

Exemple: a partir du repertoire /bin: ../home/jme/projet

Jean-Michel ENJALBERT - [email protected], 2005/2006 –16–

Page 17: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

Exemple d’arborescence

.,2bin,3home,4

.,3

..,2mkdir,5chmod,6

.,4

..,2jme,7

.,7

..,4projet,8projet.c,9

.,8

..,7

mkdirchmod

/ bin

homejme

projet

projet.c

Jean-Michel ENJALBERT - [email protected], 2005/2006 –17–

Page 18: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-3 Commandes de base

➯ pwd: affiche le chemin abolu du repertoire de travail.

➯ cd permet de se deplacer (c’est a dire de changer la valeur du repertoire de

travail) dans l’arborescence.

– Sans argument, fixe le repertoire de travail comme etant le repertoire

personnel de l’utilisateur.

– L’argument de cd peut etre un chemin absolu ou un chemin relatif.

– Le fichier .., qui fait reference au repertoire pere, permet de remonter dans

l’arborescence.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –18–

Page 19: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-4 Unites logiques

Unites logiques = unites de stockage (locales ou distantes): disque dur, lecteur de

disquettes, lecteur de CD, etc...

➯ Chaque unite contient sa propre arborescence de fichiers.

➯ Ces unites logiques sont accessibles a partir de l’arborescence generale du

systeme a condition d’etre rattache a cette arborescence. C’est ce que l’on

appelle le ”montage”.

➯ Chaque unite peut etre place a n’importe quel endroit de l’arborescence.

➯ La commande mount permet d’effectuer ce montage. Elle est associee a la

commande umount qui permet le demontage. Les unites logiques

”montables” doivent etre decrites dans le fichier /etc/fstab.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –19–

Page 20: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

Exemple de montage

mkdir

chmod

jme

projet.c

projethome

bin/

mnt

/

bin

data

src

bin

data

src

Arbre systeme Arbre unite logique

Montage au point /mnt Montage au point /home/jme

mkdir

chmod

jme

projet.c

projethome

bin/

mnt bin

data

src

mkdir

chmod

jme

home

bin/

mnt

Jean-Michel ENJALBERT - [email protected], 2005/2006 –20–

Page 21: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-5 Caracteristiques des fichiers

II-5.1 Descripteur de fichiers

Chaque fichier UNIX est associe a un descripteur (i-node) qui contient:

– un numero unique d’identification

– l’identification de son proprietaire

– un compteur de references a ce fichier

– l’adresse des blocs utilises sur le disque pour ce fichier

– sa taille en octets

– son type: ordinaire, special,...

– la date de sa creation , de sa derniere modification, ...

– les droits d’acces pour les differents utilisateurs

– etc...

Jean-Michel ENJALBERT - [email protected], 2005/2006 –21–

Page 22: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-5.2 les droits d’acces

Les droits d’acces a un fichier peuvent etre donnes soit:

– au seul proprietaire du fichier

– a tous les membres du groupe auquel il appartient

– a tous les autres utilisateurs (non-membres du groupe)

Un utilisateur appartient a un ou plusieurs groupes.

Trois types de droits d’acces:

– droits en lecture: Permet de visualiser le contenu du fichier et d’en effectuer une

copie.

– droits en ecriture: Permet de modifier le contenu du fichier.

– droits d’execution: Permet d’executer le fichier. Pour un repertoire, permet de le

”traverser” c’est a dire de se deplacer a l’interieur.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –22–

Page 23: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

Representation des type et droits d’acces d’un fichier:

➯ chaıne de 10 caracteres du type:

drwxrwxrwx

Premier caractere:

➯ - pour un fichier ordinaire

➯ d pour un repertoire

➯ l pour un lien

➯ b ou c pour un fichier special.

3 groupes de 3 caracteres: droits pour: proprietaire, groupe, autres (dans l’ordre).

➯ - absence de droits,

➯ r droits en lecture

➯ w droits en ecriture

➯ x droits en execution.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –23–

Page 24: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6 Commandes sur les fichiers

Une commande UNIX se presente sous la forme generale:

commande -options arguments

Les options comme les arguments peuvent etre omis suivant la commande

concernee. Chaque argument doit etre separe par un espace.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –24–

Page 25: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.1 Liste de fichiers

La commande ls permet d’afficher la liste des fichiers contenu dans un

repertoire.Principales options:

-l pour un affichage detaille (long)

-a pour afficher les fichiers caches (commencant par un .)

Exemple: ls -ltotal 982

-rw-r--r-- 1 enjalber rst 62107 Sep 12 13:44 7296_data.pdf

drwxr-xr-x 2 enjalber rst 1024 Jul 20 09:12 C167/

drwxr-xr-x 2 enjalber rst 512 Jul 18 08:56 Desktop/

drwx------ 2 enjalber rst 512 Sep 6 11:14 PERSO/

drwxrwx--- 9 enjalber rst 512 Jul 21 09:54 Topo/

drwx------ 15 enjalber rst 1024 Jul 20 13:15 UPS/

drwxr-x--- 2 enjalber rst 512 Jul 20 08:16 UTILS/

-rw-r--r-- 1 enjalber rst 40960 Aug 31 05:16 automate2.tar

drwx------ 2 enjalber rst 512 Sep 8 16:41 mail/

drwx------ 5 enjalber rst 1536 Jul 20 10:00 nsmail/

Sans argument, ls affiche la liste des fichiers du repertoire courant.

Sinon affiche le contenu du repertoire donne en argument,

Jean-Michel ENJALBERT - [email protected], 2005/2006 –25–

Page 26: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.2 Modification des droits d’acces: chmod

Syntaxe: chmod [ugoa][+-][rwx] nom fichier

➯ u user: le proprietaire du fichier

➯ g group: les membres du groupe

➯ o others: les autres (non-membres du groupe)

➯ a all: Tout le monde

➯ + Donne le droit d’acces

➯ - Supprime le droit d’acces

➯ r read: acces en lecture

➯ w write: acces en ecriture

➯ x : acces en execution

Remarque: Un utilisateur ne peut modifier que les droits des fichiers qui lui

appartiennent (excepte root).

Jean-Michel ENJALBERT - [email protected], 2005/2006 –26–

Page 27: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.3 Caracteres generiques

Parmi les caracteres speciaux reserves, les caracteres? et *, appeles aussi

caracteres generiques permettent de selectionner un sous-ensemble de fichiers

(pour l’affichage de leur liste par exemple).

? remplace un et un seul caractere.

* remplace une chaıne de caracteres de longueur quelconque.

Exemples:

ls *.c affiche uniquement la liste de tous les fichiers d’extension .c.

ls a?? affiche la liste de tous les fichiers dont le nom contient 3 lettres et

commence par a.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –27–

Page 28: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.4 Commandes de manipulation des fichiers

– Copie de fichiers: cp

Syntaxe: cp origine destination ou origine est le nom d’un

fichier et destination le nom d’un fichier ou d’un repertoire (nom absolu

ou relatif)

– Deplacement de fichiers mv

Syntaxe: mv origine destination. Le deplacement est un

changement de nom.

– Suppression de fichiers rm

Syntaxe: rm fichiers

Attention, sous UNIX il n’est pas possible de recuperer un fichier supprime.

On peut utiliser les caracteres generiques? et *.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –28–

Page 29: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.5 Commandes de visualisation

Les fichiers ordinaires de type texte peuvent etre visualises par differentes

commandes UNIX:

– cat

Affiche a l’ecran le contenu du fichier.

– more

Comme cat mais l’affichage se fait page par page.

– head

Affiche les premieres lignes d’un fichier.

– tail

Affiche les dernieres lignes d’un fichier.

La commande wc permet d’afficher le nombre de lignes, de mots et de caracteres

d’un fichier (dans cet ordre).

Jean-Michel ENJALBERT - [email protected], 2005/2006 –29–

Page 30: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.6 Commandes de manipulation des repertoires

Les commandes mv et cp s’appliquent aussi aux repertoires mais deux

commandes supplementaires permettent de creer et de supprimer un repertoire:

– mkdir

Pour creer un repertoire.

– rmdir

Pour supprimer un repertoire vide.

Pour un repertoire non-vide, il faut utiliser la commande:

rm -r nom repertoire.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –30–

Page 31: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

II-6.7 Les liens

Un lien vers un fichier est un pointeur qui permet d’acceder a un fichier en utilisant

un nom different. Creation d’un lien: commande ln.

Syntaxe: ln [-s] fichier lien vers fichier

➯ Lien physique Nouvelle entree dans un repertoire pour un numero d’inode

identique.

➯ Lien symbolique (option -s de la commande)

Fichier special dont le contenu specifie le chemin (absolu ou relatif) conduisant

au fichier pointe.

Si le fichier pointe est supprime, le lien existe toujours mais ne peut plus

fonctionner.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –31–

Page 32: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Systeme de fichiers GNU/Linux UPS

Illustration

.,61

..,60progV1,62progV2,63prog,63

bin

.,61

..,60progV1,62progV2,63prog,64

bin

(prog−>progV2)

Lien physique:ln progV2 prog

Lien symbolique:ln −s progV2 prog

Jean-Michel ENJALBERT - [email protected], 2005/2006 –32–

Page 33: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-Processus

III-1 Notion de processus

Un processus peut etre vu comme un programme en cours d’execution.

Il est caracterise par un environnement: registres, pile, segment de donnees.

Programmes(fichiersexecutables)

Processus

Ordonnanceur

MEMOIREDISQUE

CentraleUnite

Lancement

Chaque processus est pris en charge par le noyau du S.E. qui lui attribue les

ressources necessaires: processeur, memoire, ...

Jean-Michel ENJALBERT - [email protected], 2005/2006 –33–

Page 34: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-2 Etats d’un processus

Dans un systeme multi-taches comme UNIX, un processus peut se trouver dans

differents etats au cours de sa vie:

– En execution

Le processus est execute par le processeur

– Pret

Le processus est pret a etre execute mais il attend que le processeur se libere.

– Suspendu

Le processus est en attente d’une ressource (entree/sortie par exemple)

– Stoppe

Le processus a ete suspendu par un signal externe.

– Zombie

Le processus est termine mais reste reference dans le systeme.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –34–

Page 35: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

Graphe de changements d’etats du processus

Terminaison

Stoppe

Suspendu

ExecutionEn

Zombie

Entree/Sortie

Signal

Pret Ordonnancement

Entree/SortieFin

Signal

Creation

Requete

L’ordonnancement est le mecanisme qui permet de decider quel processus doit etre

execute par le processeur a un instant donne.

Lorsqu’un processus se termine, il reste dans l’etat zombie jusqua ce que son

processus pere prenne connaissance de son etat de terminaison.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –35–

Page 36: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-3 Attributs d’un processus

Durant son existence, un processus est caracterise par:

– son etat

– son identificateur (PID)

– la valeur des registres du processeur

– l’identite de l’utilisateur sous le nom duquel il s’execute

– les informations utilises pour l’ordonnancement: priorite,...

– les informations concernant l’espace d’adressage (code, donnees, pile)

– les informations concernant les entrees/sorties

– ...

Jean-Michel ENJALBERT - [email protected], 2005/2006 –36–

Page 37: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-4 Liste des processus

La commande ps permet d’afficher des informations sur les processus existants

dans le systeme. Elle possede differentes options. Utilise sans options, elle affiche

la liste des processus fils du terminal (shell) a partir duquel elle a ete lancee.

Exemple:

[jme@tamia AUTOMATE]$ ps

PID TTY TIME CMD

584 pts/0 00:00:00 bash

617 pts/0 00:00:00 simulateur

618 pts/0 00:00:00 ps

Jean-Michel ENJALBERT - [email protected], 2005/2006 –37–

Page 38: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

Il existe aussi la commande top qui affiche en interactif des informations sur les

processus en cours et sur leur etat.

36 processes: 33 sleeping, 3 running, 0 zombie, 0 stopped

CPU states: 44.6% user, 1.5% system, 0.0% nice, 53.7% idle

Mem: 38792K av, 37796K used, 996K free, 26320K shrd, 3672K buff

Swap: 66488K av, 3356K used, 63132K free 18592K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND

528 root 19 0 3184 3064 964 R 0 33.2 7.8 0:13 X

582 jme 1 0 4160 4160 2984 R 0 3.7 10.7 0:01 konsole

619 jme 4 0 1016 1016 824 R 0 3.7 2.6 0:00 top

1 root 0 0 108 52 44 S 0 0.0 0.1 0:04 init

2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd

3 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kupdate

336 root 0 0 200 148 108 S 0 0.0 0.3 0:00 syslogd

363 daemon 0 0 316 300 236 S 0 0.0 0.7 0:00 atd

415 root 0 0 80 0 0 SW 0 0.0 0.0 0:00 lpd

464 xfs 0 0 1096 1020 624 S 0 0.0 2.6 0:00 xfs

499 root 0 0 248 0 0 SW 0 0.0 0.0 0:00 login

500 root 0 0 68 0 0 SW 0 0.0 0.0 0:00 mingetty

Jean-Michel ENJALBERT - [email protected], 2005/2006 –38–

Page 39: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-5 Creation des processus

➯ Duplication du processus courant (appel systeme fork). Le pere cree un fils.

➯ Recouvrement du code executable du fils (appel systeme exec)

bash commande

wait

fork:exec "commande"

Processus pere Processus fils

commande2

1

commande

fork:exec "commande2"

fork:exec "commande1"

bash

A l’initialisation le processus init est lance. Ce processus cree lui-meme des

processus fils. Le resultat est une arborescence de processus.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –39–

Page 40: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-6 Mode utilisateur et mode noyau

Protection des ressources paratagees (memoire, E/S, ...):

➯ Seuls les processus systemes peuvent y acceder.

Processus utilisateur: doit utiliser des appels systeme.

ProcessusUtilisateur

ProcessusSysteme

requete E/S

requete

E/S

resultat

Exemple: Permet de verifier les droits de l’utilisateur sur un fichier.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –40–

Page 41: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-7 Communication entre processus

III-7.1 Les signaux

Un processus peut emettre un signal vers un autre processus. Appel systeme:

kill signal PID

III-7.2 Les tubes

Files de caracteres de type FIFO.

Un processus peut ouvrir un tube vers un autre processus et envoyer des donnees.

Processusemetteur

Processusrecepteur

tube de communication

ecriture lecture

Jean-Michel ENJALBERT - [email protected], 2005/2006 –41–

Page 42: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-7.3 Memoire partagee

➯ Sous UNIX, chaque processus possede sa memoire propre.

➯ Le mecanisme de memoire partagee permet de definir une zone memoire

accessible depuis plusieurs processus.

➯ Une cle permet l’acces a cette zone.

➯ Le processus qui reserve la memoire partagee genere cette cle et la transmet

aux processus avec qui il doit partager cette memoire.

Memoirepropre

Memoire commune

Memoirepropre

Processus 1 Processus 2

lecture/ecriture

Jean-Michel ENJALBERT - [email protected], 2005/2006 –42–

Page 43: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-7.4 Semaphores

➯ Servent a gerer l’allocation de ressources limitees.

➯ Dans le cas des ressources systemes (entrees/sorties, memoires,

processeur...) c’est le SE qui arbitre entre les differentes demandes (en utilisant

des semaphores!).

➯ Un semaphore est un compteur associe a une ressource.

– Si ce compteur vaut zero, c’est que la ressource est indisponible.

– Un processus qui veut acceder a une ressource ne peut le faire que si la

valeur du semaphore n’est pas nulle.

– Il decremente alors le compteur. A la liberation de la ressource, il incremente

le compteur.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –43–

Page 44: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-7.5 Files de messages

Les files de messages fonctionnent comme des boıtes aux lettres. Chaque

processus autorise peut mettre un message dans la boıte aux lettres ou en retirer

un.

Processus 1 Processus 2

Processus 3

envoi mess. lecture mess.

boite aux lettres

Jean-Michel ENJALBERT - [email protected], 2005/2006 –44–

Page 45: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-8 Redirection des Entrees/Sorties

III-8.1 Entree et sortie standards

Creation d’un processus ➯ ouverture de 3 fichiers.

– Entree standard: descripteur 0, clavier.

– Sortie standard: descripteur 1, ecran

– Sortie d’erreurs: descripteur 2, ecran

Redirections et pipeline: Ecran et clavier=fichiers speciaux ➯

– Redirection de la sortie d’un processus vers un fichier

– Redirection d’un fichier vers l’entree d’un processus.

– Redirection de la sortie d’un processus vers l’entree d’un processus.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –45–

Page 46: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-8.2 Redirection de la sortie

commande > fichier

permet de rediriger la sortie standard vers un fichier

S’il existait precedemment, le fichier est ecrase.

On peut aussi rediriger la sortie vers un fichier existant sans l’ecraser (a la suite) en

ecrivant

commande >> fichier

Un fichier particulier: /dev/null permet d’envoyer la sortie vers le neant...

Jean-Michel ENJALBERT - [email protected], 2005/2006 –46–

Page 47: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-8.3 Sortie d’erreur

En plus de la sortie standard, un processus peut ecrire sur la sortie erreurs

On peut rediriger cette sortie (l’ecran par defaut) en utilisant la syntaxe:

commande 2> fichier ou commande 2>> fichier

On peut aussi rediriger les deux sorties:

(commande > fichier1) 2> fichier2

qui redirige la sortie standard vers fichier1 et la sortie erreur vers

fichier2.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –47–

Page 48: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-8.4 Redirection de l’entree

La redirection de l’entree standard se fait en utilisant la syntaxe:

commande < fichier

Le processus vient lire dans le fichier les donnees precedemment rentrees au

clavier.

On peut bien sur rediriger a la fois l’entree et la sortie en ecrivant:

commande < fichier1 > fichier2

La commande prend ses entrees dans fichier1 et met ses sorties dans

fichier2.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –48–

Page 49: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-8.5 Enchainement de processus

On peut lier deux processus, l’un prenant en entree la sortie de l’autre (on parle de

pipeline):

commande1 | commande2

commande2 prend en entree la sortie de commande1. Ceci est equivalent a:

commande1 > tempo; commande2 < tempo; rm tempo

Remarque: Le caractere; permet d’enchaıner des commandes.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –49–

Page 50: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Processus GNU/Linux UPS

III-9 Lancement des commandes

Les commandes sont generalement lancees a partir d’un terminal.

Lancement en avant-plan (terminal bloque tant que la commande s’execute):

commande

Lancement en arriere-plan (le terminal reste disponible)

commande &

Remarque: si le processus attend des entrees clavier, il va etre stoppe.

Passage arriere-plan ➯ avant-plan: fg

Passage avant-plan ➯ arriere-plan: bg (il faut d’abord stopper le processus)

Signals envoyes a un processus en avant-plan:

– CTRL-Z: processus stoppe

– CTRL-C: processus supprime.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –50–

Page 51: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-Langage de shell

IV-1 Introduction

Shell = Interpreteur de commandes

Analyse et execute des commandes UNIX

Mode interactif: commandes rentrees au clavier dans un terminal. L’analyse de la

commande et son execution commence apres le retour-chariot (caractere CR).

Mode “batch”: la commande est un fichier contenant des commandes UNIX.

L’interpreteur execute ce fichier ligne par ligne.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –51–

Page 52: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-2 Interpreteur interactif

L’algorithme que suit un interpreteur de commande en mode interactif peut-etre

decrit ainsi:

1. Ouverture de 3 fichiers: entree standard, sortie standard, sortie d’erreur.

2. Affichage du message d’accueil (prompt).

3. Lecture sur l’entree standard (avec stockage des caracteres dans un buffer)

jusqu’au caractere retour chariot.

4. Interpretation des caracteres speciaux (par exemple “?” et “*”).

5. Recherche de la commande (dans les repertoires listes dans la variable PATH).

6. Lancement de la commande en avant-plan: fork:exec:wait:prompt

ou en arriere-plan: fork:exec:prompt. En arriere plan, on revient

directement en 2. En avant-plan, on attend la fin de la commande (fonction

wait) avant de revenir en 2.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –52–

Page 53: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-3 Fichiers de configuration

A la connection au systeme, celui-ci execute un fichier de configuration. Pour bash il

s’agit du fichier: .bash profile.

Remarques:

Le caractere # en debut de ligne indique un commentaire.

Le fichier .bash profile n’est execute qu’a la connection au systeme et pas

lors de l’ouverture d’un nouveau terminal.

.bashrc est lui execute a l’ouverture de chaque nouveau terminal.

On notera la commande alias qui permet de donner un synonyme a une

commande. L’inverse de la commande alias est la commande unalias.

Voici un exemple des fichiers .bash profile et .bashrc:

Jean-Michel ENJALBERT - [email protected], 2005/2006 –53–

Page 54: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

# .bash_profile

# Get the aliases and functions

if [ -f ˜/.bashrc ]; then

. ˜/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:.

BASH_ENV=$HOME/.bashrc

USERNAME=""

export USERNAME BASH_ENV PATH

Jean-Michel ENJALBERT - [email protected], 2005/2006 –54–

Page 55: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

# .bashrc

# User specific aliases and functions

alias rm="rm -i"

alias mv="mv -i"

alias cp="cp -i"

alias cls="clear"

alias ls="ls --color=auto"

alias ll="ls -l"

# Source global definitions

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

Jean-Michel ENJALBERT - [email protected], 2005/2006 –55–

Page 56: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-4 Variables d’environnement

Variables initialisees par le systeme (fichiers d’iniitialisation).

Exemples:

➯ PWD Contient le chemin absolu du repertoire de travail.

➯ HOSTNAME Contient le nom de la machine.

➯ USERNAME Contient le nom de l’utilisateur.

➯ PATH Contient la liste des chemins de recherche des commandes. Chaque

chemin est separee par:. Les repertoires sont explores dans l’ordre de la liste

jusqu’a ce que la commande soit trouvee.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –56–

Page 57: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5 Les scripts-shell

Un script-shell est un fichier texte contenant des commandes UNIX qui vont etre

executees par l’interpreteur de commandes.

On doit le rendre executable (commande chmod).

Il doit commencer par une ligne indiquant l’interpreteur de commandes a utiliser

(Exemple: .#!/bin/bash).

Une commande UNIX a la forme generale suivante: commande -options

arguments ou options et arguments sont des listes de chaınes de

caracteres separes par des blancs. Par exemple: rm -i *.c *.o.

Elle renvoie un code de retour qui vaut zero en cas de succes et une valeur positive

en cas d’ erreur.

Une commande UNIX peut-etre une commande interne au noyau ou une

commande externe.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –57–

Page 58: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5.1 Parametres positionnels

Les parametres positionnels permettent de recuperer les valeurs passees a une

commande (arguments ou options).

On utilise la notation: $x ou x represente le numero du parametre.

$0 represente le nom du fichier script lui-meme.

$# represente le nombre de parametres passes au script.

Exemple: Soit le script-shell essai. Si l’on execute: essai du shell

Les parametres positionnels ont les valeurs suivantes:

parametre valeur

$# 2

$0 essai

$1 du

$2 shell

Jean-Michel ENJALBERT - [email protected], 2005/2006 –58–

Page 59: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5.2 Variables utilisateurs

On peut aussi definir des variables locales dans un script simplement en les

affectant.

A l’interieur d’un script, les valeurs des variables sont accessibles en les prefixant

par le symbole $. Elles peuvent etre rendues accessibles en dehors du script grace

a la commande export.

IV-5.3 Divers

– Les commentaires commencent avec le symbole # et se terminent en fin de

ligne.

– Le separateur de commande est la fin de ligne ou le caractere;

Jean-Michel ENJALBERT - [email protected], 2005/2006 –59–

Page 60: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

Exemple de script

La commande: echo permet d’afficher des chaınes de caracteres a l’ecran et

notamment les valeurs des variables.

La commande read permet de lire une variable au clavier.

#!/bin/bash

#

# Exemple de variables utilisateurs

#

VAR1=52 # VAR1 = la chaine ’52’

VAR2=VAR1 # VAR2 = la chaine ’VAR1’ !

VAR3=$VAR1 # VAR3 = la valeur de VAR1 soit la chaine ’52’

VAR4=$((VAR1+1)) # VAR4 = la chaine: ’53’

echo $VAR1 $VAR2 $VAR3 $VAR4 # Affiche: 52 VAR1 52 53

echo "Votre reponse?"

read REP

echo "vous avez repondu: $REP"

Jean-Michel ENJALBERT - [email protected], 2005/2006 –60–

Page 61: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5.4 La commande test

La commande test permet de realiser des comparaisons. On peut ecrire: test

comparaisons ou [ comparaisons ] (espaces obligatoires!).

Quelques operateurs de comparaison:

Sur les chaınes de caracteres:

test v1 = v2 (egalite de chaınes de caracteres)

test v1!= v2 (non-egalite de chaınes de caracteres)

Sur les expressions arithmetiques:

test v1 -eq v2 (egalite de valeurs entieres)

test v1 -ne v2 (non-egalite de valeurs entieres)

Pour les expressions arithmetiques, les operateurs de comparaison suivants

peuvent etre utilises: -eq, -ne, -lt, -le, -gt, -ge.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –61–

Page 62: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

Sur les fichiers: (tirees du manuel de bash):

-a file True if file exists.

-b file True if file exists and is a block special file.

-c file True if file exists and is a character special file.

-d file True if file exists and is a directory.

-r file True if file exists and is readable.

-s file True if file exists and has a size greater than zero.

-w file True if file exists and is writable.

-x file True if file exists and is executable.

-O file True if file exists and is owned by the effective user id.

-G file True if file exists and is owned by the effective group id.

Exemple:#!/bin/bash

# teste si le parametre passe en ligne de commande est un repertoire

#

if test -d $1 ; then

echo $1 est un repertoire

else

echo $1 n’est pas un repertoire

fi

Jean-Michel ENJALBERT - [email protected], 2005/2006 –62–

Page 63: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5.5 Evaluation des expressions arithmetiques

L’evaluation arithmetique permet de remplacer une expression par le resultat de son

evaluation. Il existe deux formes (equivalentes) d’evaluation arithmetique:

$[expression]

$((expression))

Les operateurs sont les memes que ceux du langage C: +, -, *, /, >>,

<<, etc...

Par exemple, le script suivant:

#!/bin/bash

x=3

y=5

echo $x+$y $[$x+$y] $(($x*$y))

affiche:

3+5 8 15

Jean-Michel ENJALBERT - [email protected], 2005/2006 –63–

Page 64: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

IV-5.6 Structures de controle

if

if <condition1>; then

<commandes1>

elif <condition2>; then

<commandes2>

else

<commandes3>

fi

condition1 et condition2 sont des commandes (test en general).

#!/bin/bash

# lance latex et dvips si l’utilisateur a donne nom en argument

#

if test $# -ne 1; then

echo "erreur de syntaxe"

else

latex $1; dvips -o $1.ps $1.dvi

fi

Jean-Michel ENJALBERT - [email protected], 2005/2006 –64–

Page 65: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

for

for <variable> [in <liste_de_cas>]

do

<commandes>

done

([] signifie optionnel)

Exemple:

#!/bin/bash

#

# supprime les droits d’acces en lecture sur les fichiers

# d’extension .c aux utilisateurs autre que le proprietaire

# des fichiers

#

for FICHIER in *.c

do

chmod go-r $FICHIER

done

Jean-Michel ENJALBERT - [email protected], 2005/2006 –65–

Page 66: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

Si in ... est omis, liste prend successivement la valeur de chacun des

parametres positionnels.

Exemple:

#!/bin/bash

#

# Calcule la moyenne des parametres (entiers) passes en

# ligne de commande

#

SOMME=0

for NOTE

do

SOMME=$((SOMME+NOTE))

done

if [ $# -ne 0 ]; then

echo moyenne:$(($SOMME/$#))

fi

Jean-Michel ENJALBERT - [email protected], 2005/2006 –66–

Page 67: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

while

while <condition>

do

<commandes>

done

Execute les commandes tant que condition est vraie.

Exemple:

#!/bin/bash

#

x=0

while test $[$x] -lt 5 # evalue x

do # fait tant que x<5

x=$[$x+2] # incremente x de 2

echo $x # affiche x

done

Jean-Michel ENJALBERT - [email protected], 2005/2006 –67–

Page 68: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

until

until <condition>

do

<commandes>

done

Execute les commandes jusqu’a ce que condition soit vraie.

Exemple:

#!/bin/bash

#

# Exemple de boucle ’until’

# boucle jusqu’a ce que l’utilisateur tape ’fin’

#

REP=encore

until [ $REP = "fin" ]

do

echo ?

read REP

done

Jean-Michel ENJALBERT - [email protected], 2005/2006 –68–

Page 69: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

case

case <variable> in

<cas1>)

<commande1>

;;

<cas2>)

<commande2>

;;

*)

<commande_defaut>

;;

esac

cas1, cas2 sont des chaınes de caracteres.

Execute la commande pour laquelle il y a correspondance entre variable et

cas. Sinon execute la commande par defaut.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –69–

Page 70: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Langage de shell: Bash UPS

Exemple:

#!/bin/bash

#

# Calculatrice basique sur les nombres entiers

#

if [ $# -ne 3 ]; then

echo "3 parametres: operande operateur(+,-,/,x) operande"

else

case $2 in

+) echo $[$1+$3]

;;

-) echo $[$1-$3]

;;

x) echo $[$1 * $3]

;;

/) echo $[$1 / $3]

;;

*) echo "operateur inconnu" # traitement par defaut

esac

fi

Jean-Michel ENJALBERT - [email protected], 2005/2006 –70–

Page 71: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-Complements sur les commandesVoici quelques commandes usuelles Unix, certaines sont detaillees par la suite:

➯ man commande affiche l’aide en ligne de la commande

➯ grep motif fichier recherche de chaınes dans un fichier.

➯ find chemin expression recherche de fichiers.

➯ which commande recherche de commandes.

➯ tar options archive fichiers archivage de fichiers.

➯ gzip fichier compression d’un fichier

➯ file fichier affichage du type d’un fichier (ascii, binaire, ...)

➯ du rep affichage de l’espace utilise par l’arborescence specifiee.

➯ touch fichier cree un fichier vide ou met a jour sa date.

➯ diff fichier1 fichier2 affiche les differences entre fichiers texte.

➯ sort fichier tri un fichier texte

Jean-Michel ENJALBERT - [email protected], 2005/2006 –71–

Page 72: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-1 Manuel en ligne: man

La commande man permet d’afficher le manuel en ligne des commandes

disponibles sur le systeme.

Sous sa forme la plus simple sa syntaxe est: man commande.

Exemple: man man.

On peut aussi preciser la section de recherche: man section nom. Ainsi la

section 3 regroupe les fonctions systemes du langage C.

Exemple: man 3 printf

Pour afficher toutes les sections correspondants a une commande, on utilise l’option

-a.

Exemple: man -a time

Jean-Michel ENJALBERT - [email protected], 2005/2006 –72–

Page 73: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

Exemple: man grep (extraits)

Nom: grep - Afficher les lignes correspondanta un motif donne.

Synopsis:

grep [ -[[AB] ]num ] [ -[chnvx] ] motif [ fichiers... ]

Description:

grep recherche dans les fichiers d’entree indiques les lignes correspondant a un certain motif.

Si aucun fichier n’est fourni, la lecture se fait depuis l’entree standard.

Par defaut, grep affiche les lignes correspondant au motif.

grep accepte les options suivantes :

-num Les correspondances seront affichees avec num lignes supplementaires avant et apres.

-A num Afficher num lignes supplementaires apres la ligne correspondante.

-B num Afficher num lignes supplementaires avant la ligne correspondante.

-c Ne pas afficher les resultats normaux. A la place, afficher un compte des lignes correspondantes pour chaque fichier

d’entree. Avec l’option -v (voir plus bas), afficher les nombres de lignes ne correspondant pas au motif.

-h Ne pas afficher le nom des fichiers dans les resultats lorsque plusieurs fichiers sont parcourus.

-n Ajouter a chaque ligne de sortie un prefixe contenant son numero dans le fichier d’entree.

-v Inverser la mise en correspondance, pour selectionner les lignes ne correspondant pas au motif.

-x Ne selectionner que les correspondances qui occupent une ligne entiere.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –73–

Page 74: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-2 Utilisation de grep

➯ Affichage des lignes contenant la chaine: “1000” de prog.c:

grep 1000 prog.c

➯ Compte des lignes contenant “while”:

grep -c while prog.c

➯ Recherche du PID du processus: emacs

ps | grep emacs

➯ Suppression des lignes contenant “printf” de prog.c et sauvegarde dans

prog2.c:

grep -v printf prog.c > prog2.c

Jean-Michel ENJALBERT - [email protected], 2005/2006 –74–

Page 75: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-3 Recherche de fichiers find

Syntaxe: find chemin expression

Chemin: la recherche s’effectue dans le repertoire dont le chemin est donne en

argument et tous ses sous-repertoires.

Expression: affiche la liste des fichiers pour laquelle expression est vraie.

Exemples d’expressions: -name nom, -size +nk, ...

Exemples:

find /home/jme -name prog.c

Affiche le chemin de tous les fichiers prog.c contenu dans l’arborescence ayant pour

racine /home/jme

find . -size +50k

Affiche tous les fichiers du repertoire courant de taille superieure a 50 Koctets.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –75–

Page 76: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-4 Recherche de commandes: which

Recherche du chemin de l’executable donne en argument. La recherche se fait

dans les repertoires listes dans la variable d’environnement PATH.

Option: -a Affiche toutes les occurences de l’executable.

Exemple:

which bash

/bin/bash

Jean-Michel ENJALBERT - [email protected], 2005/2006 –76–

Page 77: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-5 Archivage: tar

tar permet de concatener des fichiers et des repertoires dans un seul fichier

(fichier archive)

Creation d’une archive:

tar cvf archive.tar fichiers

ou:

tar cvf archive.tar repertoires

Verification de l’archive (affichage de son contenu):

tar tvf archive.tar

Desarchivage (extraction des fichiers):

tar xvf archive.tar

Remarque: les fichiers archives ne sont pas supprimes.

Jean-Michel ENJALBERT - [email protected], 2005/2006 –77–

Page 78: Systeme` d’exploitation GNU/Linuxhomepages.laas.fr/enjalber/MEEA/slidesUnix.pdf · 2005-10-10 · M1 EEAS Systeme` d’exploitation GNU/Linux UPS Systeme` d’exploitation GNU/Linux

M1 EEAS Complements sur les commandes UPS

V-6 Compression de fichiers: gzip

Il existe plusieurs utilitaires de compression de fichier. gzip est le plus utilise sous

Linux.

Compression:

gzip fichier : remplace fichier par sa version compressee fichier.gz

Affichage du contenu du fichier compresse:

gzip -l fichier.gz

Decompression:

gzip -d fichier.gz

Jean-Michel ENJALBERT - [email protected], 2005/2006 –78–