systèmes dexploitation et programmation de systèmes -gpa435- cours #3: interpréteur de commande...
TRANSCRIPT
Systèmes d’exploitation et programmation de systèmes
-GPA435-
Cours #3: Interpréteur de commande
Enseignant: Jean-Philippe Roberge
Jean-Philippe Roberge - Mai 2014
Planification du cours #3
Petite révision du cours #2: Terminal de commande et syntaxe des commandes Documentation standard Structure des fichiers
Démonstration de la commande ssh Théorie du cours #3:
Entrée/sortie standard, redirections et tuyaux Exécution en arrière-plan Regroupement et séparation des commandes Fichiers de commandes Interpréteur de commande : démonstration d’une Fork Bomb ! Exercices…
2Jean-Philippe Roberge - Mai 2014
Jean-Philippe Roberge - Mai 20143
1 - Architecture micro-noyau:
Réduire le noyau: seulement quelques processus importants sont assignés au noyau;
les autres services processus utilisateurs appelés « serveurs »;
séparation explicite entre le noyau d’un S.E. et le développement des serveurs;
Révision du cours #2 (1)
Noyau: Partie fondamentale du système d’exploitation, il s’agit de la base, c’est-à-dire l’ensemble des processus qui gèrent les ressources de l’ordinateur. Il permet au matériel et au logiciel de communiquer ensemble.
Jean-Philippe Roberge - Mai 20144
Comparaison entre noyau « monolithic » et micro-noyau:
Révision du cours #2 (2)
5
Exemple du concept de micro-noyau:
M icro - n o yauO rd in ateur A
Serv eur d u systèm ed e fi ch iers
(O rd in ateur B )
Serv eur d u systèm ed e fi ch iers
(O rd in ateur A )
M icro - n o yauO rd in ateur B
Serv eur d 'in terfacegrap h iq ue
(O rd in ateur A )
Serv eur d 'in terfacegrap h iq ue
(O rd in ateur B )
Jean-Philippe Roberge - Mai 2014
Révision du cours #2 (3)
Jean-Philippe Roberge - Mai 20146
2 - Exécution multi-fils: un processus est divisé en plusieurs chemins d’exécution
simultanée;
fil d’exécution unité de travail interruptible et séquentielle;
fil d’exécution ne possède pas de contexte d’exécution mais utilise celui du processus père;
Révision du cours #2 (4)
Mémoire utilisée, l’état de la pile programme, les ports d’E/S associés, l’état des registres du processeur, etc.
Modèle de programmation concourante
F il p rin cip al
F il # 1 F il # 3
F il # 2 F il # 4 F il # 5
F il # 6
F il # 7
F in d e l'ex écu tio n d u fi l d 'ex écu tio n
Syn ch ro n isatio n d es fi ls d 'ex écu tio n
P ro cessus
Jean-Philippe Roberge - Mai 20147
3 - Traitement parallèle symétrique: réalisation utilisant l’exécution multifils; système à n processeurs (n 256); mémoire commune accessible par tous les processeurs; tous les processeurs sont gérés de la même façon et jouent le
même rôle; ordonnancement des fils d’exécution dans tous les processeurs
libres. Nouvelle exigence «extensibilité» du S.E.; Application du concept de micro-noyau; S.E. décentralisé; Ordonnancement des fils d’exécution réalisé localement par
chacun des processeurs; Collaboration entre les processeurs; Une réalisation plus complexe du S.E.
Révision du cours #2 (5)
8
4 - Système d’exploitation réparti:
Système d’exploitation qui gère une grappe d’ordinateurs
Complexe, doit gérer la communication et l’allocation des ressources
Méta-SE: Système d’exploitation qui gère d’autres SE, sur des machines locales
5 - Conception orientée des SE: Profiter des avantages de la programmation orienté-objet
Concept d’héritage et de spécialisation
Jean-Philippe Roberge - Mai 2014
Révision du cours #2 (6)
Format des commandesFormat des commandes• Une convention bien établie.Une convention bien établie.
twong@tony-ubuntu-12:~$ commande [—option] twong@tony-ubuntu-12:~$ commande [—option] [paramètre][paramètre]
9
L’invite affichée par l’interpréteur de commande.
L’historique des commandes
lancées.
Une commande peut avoir des options et paramètres. Les options sont toujours précédées d’un tiret (—). Les crochets ([]) signifient qu’ils ne sont pas obligatoires.
Révision du cours #2 (7)
Comment connaître les options et Comment connaître les options et paramètres des commandes?paramètres des commandes?• L’aide enligne est divisée en sections:L’aide enligne est divisée en sections:
10
Section Sujets
1 Commandes et programmes
2 Interfaces de programmation (API)
3 Fonctions des bibliothèques du langage C
4 Interfaces des périphériques et du réseau
5 Formats de fichiers
6 Jeux et application de démonstration
7 Divers (ensemble de macros, etc.)
8 Commandes pour l’administration du système
GPA435GPA435
Révision du cours #2 (8)
Contenu d’un répertoireContenu d’un répertoire• Utiliser la commande Utiliser la commande ls(1)ls(1) (list directory (list directory
content) pour voir le contenu d’un répertoirecontent) pour voir le contenu d’un répertoire
11
La signification des couleurs• Bleu: répertoire• Bleu pâle: lien (raccourci)• Vert: fichier exécutable ou répertoire standard• Rose: fichier image
Note: Ces couleurs sont générées par l’option --color de la commande ls. Voir man dircolors pour les couleurs
utilisées.
Révision du cours #2 (9)
Permissions des fichiers et répertoiresPermissions des fichiers et répertoires
12
drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Desktopdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Documentsdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Downloads-rw-r--r-- 1 twong twong 8445 Dec 17 19:56 examples.desktopdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Musicdrwxrwxr-x 2 twong twong 4096 Dec 18 22:52 MySharedrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Picturesdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Publicdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Templatesdrwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Videos
Permissions d’accès
Propriétaire (créateur)
Groupe LinuxLe c
ara
ctère
« d
» d
e la p
rem
ière
co
lon
ne indiq
ue q
u’il s’
agit
d’u
n
répert
oir
e (
dir
ect
ory
)Révision du cours #2 (10)
Permissions des fichiers et répertoiresPermissions des fichiers et répertoires
13
Fichiers et répertoires (11)Fichiers et répertoires (11)
Changement des permissions d’accèsChangement des permissions d’accès• Utilisation de la commande Utilisation de la commande chmod(1)chmod(1) (change (change
mode)mode)o Par valeurs octalesPar valeurs octales
chmod 664 exemples.desktopchmod 664 exemples.desktop
o Par symbolesPar symboles
chmod u+r+w-x,g+r+w-x.o+r-w-x exemples.desktopchmod u+r+w-x,g+r+w-x.o+r-w-x exemples.desktop
Jean-Philippe Roberge - Mai 201414
Révision cours #2 (12)
Jean-Philippe Roberge - Mai 201415
Cours #3
16
Interpréteur de commandes (1)
Qu’est-ce qu’un Interpréteur de commande (CLI: Command-Line Interpreter) ? Un programme faisant partie des composants de base du S.E. Un programme dont la fonction est d’interpréter les commandes qu’un
utilisateur entre dans l’interface de commande (i.e. le terminal)
Sous Windows: cmd.exe, maintenant largement remplacé par Powershell. L’interface graphique demeure privilégiée depuis plusieurs années!
Sous UNIX / Linux: Plusieurs interpréteurs existent et l’utilisation du terminal de commande est très répandue, bien que ces dernières années de nombreuses distributions ont fait naître une interface graphique bien élaborée.
Interpréteur de commandes (2)
17
Au niveau des systèmes UNIX / Linux, plusieurs interpréteurs ont vu le jour!
Tableau tiré intégralement de http://bash.leyan.org/
18
Bourne shell (sh): créé par Steve Bourne; interpréteur par défaut de
nombreux système UNIX / Linux.
Pourquoi utiliser le Bourne shell? plus ancien et plus répandu; très utilisé parmi les
gestionnaires de systèmes et les développeurs de logiciels.
Interpréteur de commandes (3)
Comment un interpréteur traite-t-il Comment un interpréteur traite-t-il généralement une ligne de commande?généralement une ligne de commande?
P ren d re le p rem ierjeto n . L e co n sid érer
co m m e le n o m d 'un eco m m an d e
F in d e la lign e d eco m m an d e ?
L a co m m an d e ex iste ?
P ren d re leseco n d jeto n
co m m eargum en ts d ela co m m an d e
A ff ich er" C o m m an d ein ex isten te"
A ff ich erle curseur
E x écuter laco m m an d e
19
Interpréteur de commandes (4)
Actuellement, bash est certainement l’interpréteur le plus répandu pour les systèmes Linux!
20
Concernant l’entrée et la sortie standard: Entrée standard Elle est normalement attachée au clavier
Elle possède un numéro de descripteur égal à 0 Sortie standard Elle est normalement attachée à l’écran
Elle possède un numéro de descripteur égal à 1 Erreur standard Elle est normalement attachée à l’écran
Elle possède un numéro de descripteur égal à 2
En bref:
Entrée-Sortie standard (1)
Tableau tiré intégralement de http://bash.leyan.org/
21
Effet de la redirection:
Clavier
C o m m an de
Ent
rée
stan
dard
Sans red irection
Clavier
C o m m an de
Fichiers
Fichiers
Term inal
Sort
ie sta
ndar
dTerm inal
E ntrée et sortiestand ard red irigées
< >
Entrée-Sortie standard (2)
22
Il est possible de rediriger les entrées-sorties standards à des fichiers ou à d’autres programmes et commandes.
Redirection de l’entrée standard:
cat < NomFichier
Démonstration de la procédureDémonstration de la procédure
CommandeCommande Redirection de l’entrée standard à un fichier. Redirection de l’entrée standard à un fichier. L’entrée de la commande L’entrée de la commande cat(1)cat(1) est le fichier est le fichier
NomFichierNomFichier
Entrée-Sortie standard (3)
23
Redirection de la sortie standard:
cat cat > NomFichier> NomFichier
Redirection de l’entrée et de la sortie standard:
cat < FichierEntree > FichierSortiecat < FichierEntree > FichierSortie
Démonstration des procéduresDémonstration des procédures
CommandeCommandeRedirection de la sortie standard à un fichier. La Redirection de la sortie standard à un fichier. La
sortie de la commande sortie de la commande cat(1)cat(1) est enregistré dans est enregistré dans le fichier le fichier NomFichierNomFichier
Entrée-Sortie standard (4)
24
Rediriger la sortie vers un fichier écrase le contenu du fichier de sortie.
Utiliser la concaténation pour préserver le contenu du fichier de sortie:
cat < toto.txt >> FichierSortiecat < toto.txt >> FichierSortie
Démonstration de la procédureDémonstration de la procédure
La sortie de la commande La sortie de la commande catcat est est ajoutée à la fin du fichier ajoutée à la fin du fichier FichierSortieFichierSortie
Entrée-Sortie standard (5)
25
Rediriger l’erreur standard implique une syntaxe un peu
différente.
Utilisation des numéros de descripteur.
commande < FichierEntree
commande <0 FichierEntree
commande > FichierSortie
commande 1> FichierSortie
commande 2> FichierErreur
ÉquivalentesÉquivalentes
ÉquivalentesÉquivalentes
Redirection de l’erreur standardRedirection de l’erreur standard
Entrée-Sortie standard (6)
26
cat < entree.txt > sortie.txt 2> erreur.txtcat < entree.txt > sortie.txt 2> erreur.txt
cat > sortie.txt 2>&1cat > sortie.txt 2>&1
Démonstration de la procédureDémonstration de la procédure
Les messages d ’erreur de la commande Les messages d ’erreur de la commande cat cat seront enregistrés dans ce fichierseront enregistrés dans ce fichier
La sortie de La sortie de catcat est enregistrée dans le fichier est enregistrée dans le fichier sortie.txtsortie.txt. . L ’erreur standard est redirigée à la sortie standard. L ’erreur standard est redirigée à la sortie standard.
Donc, l’erreur standard est également redirigée au fichier Donc, l’erreur standard est également redirigée au fichier sortie.txtsortie.txt..
Entrée-Sortie standard (7)
27
Tuyaux brancher la sortie standard d’une commande à l’entrée
standard d’une autre commande.
cmd1 cmd2
C o m m an de C o m m an de| (tuyau)
So rtiestan d ard
E n tréestan d ard
Tuyaux (1)
28
ls -lR | more
La sortie de la commande ls est l’entrée de la commande
more.
cat document.txt | tr abc ABC > traduit.txtcat document.txt | tr abc ABC > traduit.txtTuyauTuyau
trtr ( (translatetranslate) remplace le caractère a ) remplace le caractère a par A, b par B et c par C.par A, b par B et c par C.
La sortie de La sortie de trtr est enregistrée dans est enregistrée dans le fichier le fichier traduit.txttraduit.txt
Tuyaux (2)
29
Toutes les commandes vues jusqu’à présent sont exécutées en avant-plan.
Monopolisent le terminal.
Ne convient pas à des tâches de longue durée.
Lancer les commandes en arrière-plan:
commande [-options] [paramètre] commande [-options] [paramètre] &&Symbole indiquant une exécution en Symbole indiquant une exécution en
arrière-plan d’une commandearrière-plan d’une commande
Exécution en arrière-plan (1)
30
Exemple:
cat passwd.dat | sort > sortie.txt &cat passwd.dat | sort > sortie.txt &
Attention aux entrées-sorties des commandes exécutées en arrière-plan !!!
Laquelle des commandes sera-t-elle exécutée en Laquelle des commandes sera-t-elle exécutée en arrière-plan ?arrière-plan ?
Démonstration de la procédureDémonstration de la procédure
Exécution en arrière-plan (2)
31
Exécution séquentielle d’une ligne de commandes:
cmd1 ; cmd2 ; cmd3cmd1 ; cmd2 ; cmd3 Exécution séquentielle d’une ligne de commandes par
regroupement:
(cmd1 ; cmd2) ; cmd3(cmd1 ; cmd2) ; cmd3
(cmd1 ; cmd2) & cmd3(cmd1 ; cmd2) & cmd3Commandes regroupés sont exécutées dans un Commandes regroupés sont exécutées dans un interpréteur enfant (interpréteur enfant (subshellsubshell).).
Plusieurs Plusieurs combinaisons sont combinaisons sont possiblespossibles
Regroupement des commandes (1)
32
Exemple:
Démonstration de la procédureDémonstration de la procédure
Quelle sera la sortie de ces Quelle sera la sortie de ces deux commandes ?deux commandes ?
Commandes entre parenthèses sont exécutées par Commandes entre parenthèses sont exécutées par un interpréteur enfant.un interpréteur enfant.
Regroupement des commandes (2)
33
Explication de l’exemple précédent:
pwd affiche le nom du répertoire courant.
(cd ..; pwd; cp user.txt test.txt; ls -l test.txt)
pwd revient à l’interpréteur père et affiche le nom du répertoire courant.
Remonter Remonter vers le vers le répertoire répertoire parentparent
Affiche le nom du Affiche le nom du répertoire courantrépertoire courant
Copier le fichier Copier le fichier user.txtuser.txt vers le fichier vers le fichier test.txttest.txt
Montrer que le Montrer que le fichier a été copiéfichier a été copié
Toutes ces commandes Toutes ces commandes sont exécutées dans un sont exécutées dans un interpréteur enfantinterpréteur enfant
Regroupement des commandes (3)
34
Explication de l’exemple précédent (suite):
I n terp réteurd e
co m m an de
I n terp réteurd e
co m m an de
P aren t E n fan tE x écutio n d es co m m an d es regro up ées
C réatio n d 'un n o uv eau in terp réteur
F in d e l'ex écutio n d es co m m an d es regro up éesD estructio n d u n o uv eau in terp réteur
Regroupement des commandes (4)
35
Conditions d’un fichier de commande:• contient des commandes et instructions légales de Bourne
shell;
• fichier est lisible et/ou exécutable par le Bourne shell.
Exécution d’un fichier de commande:• sh FichierCommande
• contient à la première ligne du fichier la directive:
#!/bin/sh
Démonstration de la procédureDémonstration de la procédure
Fichier de commande (1)
36
Variables prédéfinies:
Variable Signification
HOME Répertoire de travail de l’utilisateur.
PATH Chemins de fouille pour trouver une commande, un programme. Leschemins sont séparés par le caractère :.
MAIL Chemin indiquant la boîte de courriers de l’utilisateur.
PS1 Le caractère représentant le curseur. Par défaut, le caractère $ joue lerôle de curseur.
PS2 Lorsqu’une commande s’étend sur plus d’une ligne, l’interpréteur decommande affiche un second caractère pour indiquer qu’il fautcontinuer l’entrée. Par défaut c’est le caractère > qui est contenu danscette variable.
IFS Les caractères qui jouent le rôle de séparateur des commandes. En plusdes caractères espace et TAB, l’interpréteur considère les caractèrescontenus dans IFS comme séparateurs supplémentaires.
CDPATH Le contenu de cette variable modifie le comportement de la commandecd(1). Voir le manuel en-ligne pour les détails de cette commande.
TZ Cette variable indique la zone horaire (Time Zone) utilisée.
Variables de l’interpréteur (1)
37
Variables prédéfinies (suite):
Variable Signification
$* Contient les paramètres entrées dans la ligne de commandes lors del’invocation du fichier de commandes.
$0 Nom du fichier de commande.
$n Valeur du ne paramètre de la ligne de commande.
$* Le contenu de la ligne de commande.
$# Le nombre de paramètres dans la ligne de commandes lors del’invocation du fichier de commandes.
$? L’état de terminaison (un numéro) de la dernière commande exécutée.
$$ Le numéro du processus PID correspondant à l’interpréteur decommande.
$! Le numéro du processus PID correspondant à la dernière tâcheexécutant en arrière-plan.
Variables de l’interpréteur (2)
38
Réglage des variables:• var=valeur
• TOTO="Bonjour les SEPSistes"
• Allo="$TOTO du cours GPA435"
Explication:TOTO $TOTO
N o m d e la v ariab le
C o n ten u d e la v ariab le
Variables de l’interpréteur (3)
39
Éliminer une variable de l’environnement: unset NomVariable
Voir le contenu d’un variable: echo $NomVariable
Voir le contenu de toutes les variables d’environnement: set(1)
Variables de l’interpréteur (4)
40
Transmettre une variable à un interpréteur enfant:• export(1)
Exemple d’exportation d’une variable:
Variable Variable REPERTOIREREPERTOIRE n’est pas exportée et elle n’est pas n’est pas exportée et elle n’est pas disponible dans les interpréteurs enfants.disponible dans les interpréteurs enfants.
Variables de l’interpréteur (5)
41
Exemple d’exportation d’une variable:
Variable Variable REPERTOIREREPERTOIRE est exportée et elle est disponible est exportée et elle est disponible dans les interpréteurs enfants.dans les interpréteurs enfants.
Fin du chapitre 5Fin du chapitre 5
Variables de l’interpréteur (6)
42
Démonstration d’une Fork Bomb
Comment faire « planter » un système d’exploitation Linux à l’aide de l’interpréteur de commandes ? En créant un processus
qui créé récursivement des processus…
C’est-à-dire:
Démonstration de la procédureDémonstration de la procédure
43
Exercices (1)
Références
[1] Présentations PowerPoint du cours GPA435, Tony Wong.
[2] Notes de cours, GPA435
[3] Levasseur, Yan, Wiki GPA435: http://bash.leyan.org/Accueil , consulté en avril 2014.
[4] Tanenbaum, A.S., Systèmes d’exploitation. Pearson Education France, 2008.
[5] Stallings, W., Operating Systems : Internals and Design Principals. Upper Saddle River, NJ : Prentice Hall, 1998.
[6] Références citées dans le premier chapitre des notes de cours.
44 Jean-Philippe Roberge - Avril 2014