Introduction au système d exploitation Linux Linux / Emacs / Scilab / L A TEX Jean-Philippe Chancelier et Michel De Lara 7 septembre 2009 Table des matières 1 Introduction 2 2 Le système de fichiers 3 2.1 Arborescence................................... 3 2.2 Chemins...................................... 4 3 Le shell 4 3.1 Les processus................................... 4 3.2 Interaction avec le système de fichiers...................... 5 4 Autres commandes 6
1 Introduction Le système d exploitation (Operating System ou OS), fait la liaison entre les ressources matérielles de l ordinateur (disques, clavier, écran...) et l utilisateur et les applications. Lorsqu un programme doit accéder à une ressource matérielle, c est le système d exploitation qui se charge de transmettre les requêtes au périphérique concerné. Le système d exploitation permet d interagir avec l ordinateur de façon indépendante du matériel qui le compose; il prend en charge : la gestion des processus; la gestion de la mémoire; la gestion des entrées/sorties; le système de fichiers; la gestion des communications entre machines. Linux (ou Gnu/Linux) est un système d exploitation. Linus B.Torvalds en est à l origine (début des années quatre-vingt dix) et une première version créée avec l aide de nombreux contributeurs a vu le jour en 1991. Linux a la particularité d être un Unix libre. Initialement conçu pour fonctionner sur plateforme PC, il a été porté vers de nombreuses plateformes Apple Macintosh, stations SPARC, stations DEC Alpha... Pour l enseignant. Faire un parallèle avec Windows. Linux est architecturé autour d un noyau (en anglais kernel) qui prend en charge le matériel. L utilisateur interagit avec le noyau en utilisant un programme appelé shell ou interprète de commandes (il en existe plusieurs). Question 1 Ouvrir une fenêtre Terminal en cherchant dans les menus (ou en cliquant dans le dond d écran avec le bouton de droite). Taper la commande uname -a qui retourne la version d Unix. Taper la commande echo $SHELL ou bien echo $shell qui retourne le nom du shell (echo affiche le résultat de l évaluation de l expression qui suit). Quand on utilise une machine sous Linux, on utilise en fait une distribution Linux composée d un noyau et d un ensemble de logiciels pré-installés. La distribution Linux utilisée à l ENPC est la distribution Debian. Linux est un système multi plate-formes. Il est aussi multi-utilisateurs (plusieurs personnes peuvent travailler en même temps), multi-tâches (plusieurs applications peuvent être lancées en même temps sans conflits) et multi-processeurs. Linux est considéré comme un système fiable, robuste et puissant (beaucoup de serveurs web sont bâtis autour de Linux/Apache). L interface utilisateur que l on trouve sur les machines Linux est soit Gnome soit Kde. Ces deux interfaces sont basées sur X-Window qui est une interface graphique (développée initialement au MIT) permettant de créer des applications graphiques fonctionnant sur diverses plateformes (Windows compris). 2
2 Le système de fichiers Les informations stockées sur un ordinateur se trouvent dans des fichiers. Le système de fichiers d un système d exploitation est la partie destinée à leur gestion. Son but est de masquer les détails d organisation physique du système pour présenter à l utilisateur une version simple de l organisation de ses données. Un disque dur, par exemple, ne présente au système d exploitation qu un ensemble de blocs de même taille (généralement 512 octets), accessibles d après leurs numéros. À l aide de ce service limité, le système d exploitation se charge de construire un système de fichiers. Question 2 Dans la fenêtre Terminal, taper la commande df qui liste les partitions et indique l origine physique du disque sur lequel vous vous trouvez. 2.1 Arborescence Un fichier est une suite ordonnée d octets qu un programme peut lire ou modifier. Question 3 Dans la fenêtre Terminal, taper la commande touch vide.tex qui crée un fichier vide, de nom vide.tex. La commande du -h vide.tex donne sa taille en octets. Tous les systèmes de fichiers permettent la création de répertoires qui sont utilisés pour rassembler un ensemble de fichiers. Les répertoires peuvent en fait aussi contenir d autres répertoires, ce qui donne une structure arborescente. Un fichier est donc une feuille dans une structure arborescente et son nom complet est un chemin dans l arbre des fichiers. Pour l enseignant. Détailler la notion de chemin. Revenir sur la distinction chemin absolu/relatif. Question 4 Dans la fenêtre Terminal, taper la commande ls qui donne la liste des répertoires et des fichiers du répertoire courant, connu par la commande pwd. Vérifier que le fichier vide.tex existe bien et identifier son répertoire d appartenance. Le système de fichiers permet de rajouter des propriétés au contenu du fichier, par exemple le nom du fichier, le nom du propriétaire de chaque fichier ainsi que les droits d accès. Pour l enseignant. Détailler les droits d accès. Expliquer les significations de rwx. Question 5 Dans la fenêtre Terminal, taper la commande ls -all qui donne la liste des répertoires et des fichiers du répertoire courant, avec le nom du propriétaire de chaque fichier, la taille, la date ainsi que les droits d accès. Ces droits d accès se changent avec la commande chmod. Taper ls -all vide.tex et examinez les droits d accès du fichier vide.tex. Changer les droits d accès du fichier vide.tex par chmod a+w vide.tex : tous (a pour all) les utilisateurs peuvent dorénavant écrire (w pour write) dans le fichier vide.tex; le vérifier en tapant ls -all vide.tex. Taper man chmod pour plus de détails; en sortir par la touche q. 3
Trois fonctions sont utiles à ce stade. Rafraichissement : en tapant Ctrl l, vous rafraichissez la fenêtre Terminal. Historique : l historique des commandes passées peut être rappelé en tapant sur la flèche. Complétion automatique : en tapant ls vi suivi de la touche TAB, le shell complètera automatiquement en ls vide.tex. 2.2 Chemins Chemins relatifs (../Dupont) et absolus (/home/dupont). Décrire un ensemble de fichiers par une expression (../Dupon*). Trouver un fichier (locate et find). Question 6 Dans la fenêtre Terminal, taper la commande mkdir perso qui crée le répertoire perso. Copier le fichier vide.tex dans le répertoire perso par la commande cp vide.tex perso. Changer le nom par mv perso/vide.tex perso/empty.sce. Quel est le chemin absolu du fichier empty.sce? Vérifier avec ls suivi de ce chemin. Descendre dans le répertoire perso par la commande cd perso, taper pwd, puis remonter par cd../ et retaper pwd. En tapant cd, vous retournez à votre répertoire principal. 3 Le shell Le shell est, comme nous l avons déjà indiqué, un interprète de commandes. Il permet de lancer des applications et d interagir avec le noyau. Les shells sont en fait des langages de programmation assez puissants; on peut donc écrire une succession de commandes du shell dans un fichier puis faire exécuter ce fichier par le shell. 3.1 Les processus Un processus est l abstraction d un programme en train de s exécuter. Le système d exploitation se charge de la répartition du temps accordé aux processus (ordonnancement) et de leurs accès aux ressources de l ordinateur. Lancer un programme : emacs & (en batch); emacs (pas en batch ; à éviter). Visualiser les processus : ps. Sous gnome, la commande gnome-system-monitor & lance une application qui permet de voir à la fois l occupation mémoire et les processus et de tuer des processus. Question 7 Dans la fenêtre Terminal, taper la commande emacs &. Vérifier par ps que le programme s exécute. Éditer la liste des processus avec gnome-system-monitor &. Identifier le processus emacs puis le tuer. 4
Le petit programme ci-dessous, appelé script, est une suite de commandes du shell csh. Au lieu de les taper interactivement, nous écrivons les instructions dans un fichier. Il faut faire commencer le fichier par la ligne #!/bin/csh (qui indique le chemin de l interprète de commande à utiliser). Le fichier est rendu exécutable au moyen de chmod +x nom-dufichier. Son contenu s exécute quand on tape le nom du fichier (en utilisant les règles de recherche des fichiers exécutables). #!/bin/csh @ num=1 while ( $num <= 10 ) touch foo_${num}.txt @ num++ end Question 8 Dans votre répertoire courant, créez un fichier script1, recopiez-y les lignes cidessus, et rendez-le exécutable. Créez un nouveau répertoire TPscript dans votre répertoire courant et déplacez-vous dans TPscript. Faites exécuter le script précédent au moyen de la commande../script1. Que fait-il? Dans le même répertoire, faites maintenant exécuter un autre script dont les commandes sont données par foreach f ( foo_*.txt ) set new= echo $f sed -e s/foo_/goo_/g -e s/.txt/.tex/g echo moving $f to $new mv $f $new end À votre avis, que fait ce dernier script? 3.2 Interaction avec le système de fichiers ls liste des fichiers ls -all ls toto* [tous les fichiers dont le nom commence par toto] mkdir crée un répertoire mkdir perso mv déplace ou renomme un fichier ou un répertoire mv toto tutu mv toto* /tmp cp copie un fichier cp toto tutu cp -R copie un répertoire cp -R toto* /tmp rm détruit un fichier ou un répertoire rm toto 5
rm -f -r perso/* rmdir détruit un répertoire rmdir perso cd changer le répertoire courant cd cd /tmp find et locate chercher des fichiers. find. -name toto* locate latex 4 Autres commandes man accède au manuel en ligne man ls more visualise le contenu d un fichier more toto grep cherche une chaîne de caractères dans un fichier wc compte les mots ou les lettres d un fichier diff compare deux fichiers Question 9 Éditer un fichier avec emacs toto.txt &, et y taper quelques lignes de texte. Combien de mots contient ce fichier? Y chercher une chaîne de caractères. Modifier le fichier en le sauvant sous un autre nom, puis comparer les deux. Pour l enseignant. Récapituler les commandes importantes. 6