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… Jean-Philippe Roberge - Mai 2014
GPA435 - Systèmes d'exploitation et programmation de système 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. 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; Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Révision du cours #2 (2) Comparaison entre noyau « monolithic » et micro-noyau: Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Révision du cours #2 (3) Exemple du concept de micro-noyau: Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Révision du cours #2 (4) 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; Modèle de programmation concourante Mémoire utilisée, l’état de la pile programme, les ports d’E/S associés, l’état des registres du processeur, etc. Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Révision du cours #2 (5) 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. Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Révision du cours #2 (6) 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 ETS - GPA, (c) Tony Wong, Ph.D., ing.
Révision du cours #2 (7) Format des commandes Une convention bien établie. twong@tony-ubuntu-12:~$ commande [—option] [paramètre] L’invite affichée par l’interpréteur de commande. 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. L’historique des commandes lancées. 9
Révision du cours #2 (8) Comment connaître les options et paramètres des commandes? L’aide enligne est divisée en sections: 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 GPA435 10
Révision du cours #2 (9) Contenu d’un répertoire Utiliser la commande ls(1) (list directory content) pour voir le contenu d’un répertoire 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. 11
Propriétaire (créateur) Révision du cours #2 (10) Permissions des fichiers et répertoires drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Desktop drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Documents drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Downloads -rw-r--r-- 1 twong twong 8445 Dec 17 19:56 examples.desktop drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Music drwxrwxr-x 2 twong twong 4096 Dec 18 22:52 MyShare drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Pictures drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Public drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Templates drwxr-xr-x 2 twong twong 4096 Dec 17 20:13 Videos Le caractère « d » de la première colonne indique qu’il s’agit d’un répertoire (directory) Permissions d’accès Groupe Linux Propriétaire (créateur) 12
Fichiers et répertoires (11) Permissions des fichiers et répertoires Changement des permissions d’accès Utilisation de la commande chmod(1) (change mode) Par valeurs octales chmod 664 exemples.desktop Par symboles chmod u+r+w-x,g+r+w-x.o+r-w-x exemples.desktop 13
GPA435 - Systèmes d'exploitation et programmation de système Révision cours #2 (12) Autres concepts: sudo et su ifconfig Autres commandes: ssh date echo diff head dmesg tail locate top http://ss64.com/bash/ chown Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 - Systèmes d'exploitation et programmation de système Cours #3 Jean-Philippe Roberge - Mai 2014 ETS - GPA, (c) Tony Wong, Ph.D., ing.
Interpréteur de commandes (1) GPA435 Systèmes d'exploitation et programmation de système 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. ETS - GPA, (c) Tony Wong, Ph.D., ing.
Interpréteur de commandes (2) GPA435 Systèmes d'exploitation et programmation de système Interpréteur de commandes (2) Au niveau des systèmes UNIX / Linux, plusieurs interpréteurs ont vu le jour! Tableau tiré intégralement de http://bash.leyan.org/ ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 Systèmes d'exploitation et programmation de système Interpréteur de commandes (3) GPA435 Systèmes d'exploitation et programmation de système Comment un interpréteur traite-t-il généralement une ligne de commande? 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. ETS - GPA, (c) Tony Wong, Ph.D., ing.
Interpréteur de commandes (4) GPA435 Systèmes d'exploitation et programmation de système Actuellement, bash est certainement l’interpréteur le plus répandu pour les systèmes Linux! ETS - GPA, (c) Tony Wong, Ph.D., ing.
Entrée-Sortie standard (1) 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: Tableau tiré intégralement de http://bash.leyan.org/
Entrée-Sortie standard (2) Effet de la redirection:
Entrée-Sortie standard (3) 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 Redirection de l’entrée standard à un fichier. L’entrée de la commande cat(1) est le fichier NomFichier Commande Démonstration de la procédure
Entrée-Sortie standard (4) Redirection de la sortie standard: cat > NomFichier Redirection de l’entrée et de la sortie standard: cat < FichierEntree > FichierSortie Redirection de la sortie standard à un fichier. La sortie de la commande cat(1) est enregistré dans le fichier NomFichier Commande Démonstration des procédures
Entrée-Sortie standard (5) 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 >> FichierSortie La sortie de la commande cat est ajoutée à la fin du fichier FichierSortie Démonstration de la procédure
Entrée-Sortie standard (6) 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 Redirection de l’erreur standard
Entrée-Sortie standard (7) cat < entree.txt > sortie.txt 2> erreur.txt cat > sortie.txt 2>&1 Les messages d ’erreur de la commande cat seront enregistrés dans ce fichier La sortie de cat est enregistrée dans le fichier sortie.txt. L ’erreur standard est redirigée à la sortie standard. Donc, l’erreur standard est également redirigée au fichier sortie.txt. Démonstration de la procédure
Tuyaux (1) Tuyaux brancher la sortie standard d’une commande à l’entrée standard d’une autre commande.
Tuyaux (2) cat document.txt | tr abc ABC > traduit.txt ls -lR | more La sortie de la commande ls est l’entrée de la commande more. cat document.txt | tr abc ABC > traduit.txt Tuyau tr (translate) remplace le caractère a par A, b par B et c par C. La sortie de tr est enregistrée dans le fichier traduit.txt
Exécution en arrière-plan (1) 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] & Symbole indiquant une exécution en arrière-plan d’une commande
Exécution en arrière-plan (2) Exemple: 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 arrière-plan ? Démonstration de la procédure
Regroupement des commandes (1) Exécution séquentielle d’une ligne de commandes: cmd1 ; cmd2 ; cmd3 Exécution séquentielle d’une ligne de commandes par regroupement: (cmd1 ; cmd2) ; cmd3 (cmd1 ; cmd2) & cmd3 Plusieurs combinaisons sont possibles Commandes regroupés sont exécutées dans un interpréteur enfant (subshell).
Regroupement des commandes (2) Exemple: Commandes entre parenthèses sont exécutées par un interpréteur enfant. Quelle sera la sortie de ces deux commandes ? Démonstration de la procédure
Regroupement des commandes (3) 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 vers le répertoire parent Copier le fichier user.txt vers le fichier test.txt Montrer que le fichier a été copié Affiche le nom du répertoire courant Toutes ces commandes sont exécutées dans un interpréteur enfant
Regroupement des commandes (4) Explication de l’exemple précédent (suite):
Fichier de commande (1) Démonstration de la procédure 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édure
Variables de l’interpréteur (1) Variables prédéfinies:
Variables de l’interpréteur (2) Variables prédéfinies (suite):
Variables de l’interpréteur (3) Réglage des variables: var=valeur TOTO="Bonjour les SEPSistes" Allo="$TOTO du cours GPA435" Explication:
Variables de l’interpréteur (4) É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 (5) Transmettre une variable à un interpréteur enfant: export(1) Exemple d’exportation d’une variable: Variable REPERTOIRE n’est pas exportée et elle n’est pas disponible dans les interpréteurs enfants.
GPA435 Systèmes d'exploitation et programmation de système Variables de l’interpréteur (6) GPA435 Systèmes d'exploitation et programmation de système Exemple d’exportation d’une variable: Variable REPERTOIRE est exportée et elle est disponible dans les interpréteurs enfants. Fin du chapitre 5 ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 Systèmes d'exploitation et programmation de système 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édure ETS - GPA, (c) Tony Wong, Ph.D., ing.
GPA435 Systèmes d'exploitation et programmation de système Exercices (1) GPA435 Systèmes d'exploitation et programmation de système ETS - GPA, (c) Tony Wong, Ph.D., ing.
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. Jean-Philippe Roberge - Avril 2014