Introduction au monde Linux Joel Marchand Laboratoire GAGE Ecole Polytechnique/CNRS E-mail : Joel.Marchand@polytechnique.fr Où en est Unix à ce jour ? * Le système développé dans les Bell Laboratories (ATT) il y a près de 30 ans a beaucoup evolue (multiples versions) et énormément grossi. * Il existe plusieurs familles : - d'origine ATT : Système V Release 4 - d'origine Berkeley : 4.4 BSD - Linux * A partir de là, chaque constructeur a sa propre implémentation - IBM : AIX de la station aux grands systèmes - DEC : Digital Unix 4.0 - Sun : Sun OS 4.1.4 et Solaris 2.6 - HP : HP/UX 10.x et 11.0 - Silicon Graphics : Irix 6.5 - SCO, Unixware, Solaris, Linux, NetBSD, FreeBSD, .... sur plateformes PC/Intel - etc * pour pallier cette hétérogénéité, des organismes internationaux se sont constitués : - Open Group (fusion d'OSF et X/Open) : pour la labellisation Unix - POSIX : pour définir des normes de portabilité - etc * la part de marché d'Unix continue néanmoins à croître dans tous les secteurs. Même en gestion, Unix devient incontournable pour de nombreuses entreprises. * Dans le domaine scientifique, il est désormais le système d'exploitation dominant, en particulier dans le monde de la recherche. Dans ce domaine, la place de Linux devient importante : il est devenu LE système sur lequel les développeurs s'appuient Principales caractéristiques d'Unix * multi-utilisateurs et multi-tâches * il est dit système "ouvert" * structure modulaire du noyau permettant une relative extensibilité * gestion de la mémoire virtuelle * gestion des processus * gestion des fichiers et des entrées/sorties * langage de commandes, nommé "shell" * écrit en langage C Unix vu de l'utilisateur * le shell * l'arbre des fichiers * leur manipulation * les éditeurs et traitements de textes * l'aide en ligne - la documentation * les compilateurs - la mise au point - les outils * la gestion des processus * les outils de communication * les fichiers de configuration Le shell * Programme d'interprétation d'une chaîne de caractères, qui, si elle est conforme au langage de commandes, est alors évaluée et exécutée. * C'est donc une boucle infinie, durant le temps de la session. * Plusieurs versions Bourne shell : sh C-shell : csh Versions plus sophistiquées : tcsh, ksh, bash * C'est aussi un langage de programmation permettant d'écrire des fichiers de commandes (shell-scripts), utiles pour la gestion du système ou le lancement d'applications complexes. * Notions de : - variables - structures de contrôle - test - appel des commandes du système L'arbre des fichiers * Les fichiers Unix sont tous de type texte (suite de caractères) et sont organisés logiquement en file-systems, qui correspondent à des zones physiques de disque dur. * Vu de l'utilisateur, ils apparaissent sous forme d'arbre. * Un noeud de l'arbre qui n'est pas une feuille est un répertoire (directory). Une feuille est un fichier. * Ils peuvent être nommés de façon - absolue /etc/motd - relative à la position courante motd - relative à l'utilisateur ~duval/fichier * Caractères spéciaux . = position courante .. = père dans l'arbre * = nombre de caractères quelconque ? = caractère quelconque ~ = référence à un utilisateur L'utilisateur * Il a une description vis à vis du système : - un numéro (UID) associé à un nom (login) - un numéro de groupe (GID) associé à un nom de groupe - un shell de démarrage - un mot de passe - un home-directory * Tout est decrit dans les fichiers /etc/passwd /etc/group La manipulation des fichiers * La liste des fichiers d'un directory : ls * Avec tous les renseignements : ls -al * Pour afficher un fichier : cat * Page par page : more * Le début/fin d'un fichier : head/tail * La modification des droits : chmod {ugo}{+/=/-}{rwx} * La copie : cp * La destruction : rm * Le renommage : mv * La création/suppression de directory : mkdir/rmdir * Le changement/affichage du directory courant : cd ; pwd Les éditeurs et traitements de textes - Les editeurs * Ed, sed * Vi, ex * Emacs * Axe * Xedit * Nedit * etc - Les traitements de textes non WISYWIG * Nroff, troff * TeX/LaTeX - Les traitements de textes WISYWIG * Applixware * StarOffice * FrameMaker La documentation * La description des commandes est la même sur papier qu'en ligne. * Il existe huit sections thématiques. * L'accès se fait par man * Il existe aussi : apropos man intro whatis Les outils de programmation * Les compilateurs : C : cc, gcc Fortran : f77, fort, fortran Pascal : pc C++ : CC, g++ * L'éditeur de liens : ld * Le deboggeur symbolique : dbx gdb Les utilitaires grep ; recherche de chaine dans des fichiers find ; application recursive d'une action sur un arbre de fichiers sed ; editeur en ligne programmable awk ; outil performant de manipulation de lignes file ; donne le type d'un fichier diff ; montre les differences entre 2 fichiers cmp ; compare 2 fichiers sort ; tri un fichier join ; joint 2 fichiers complementaires uniq ; elimine les doublons dans un fichier make ; outil de gestion de compilation de programmes tar ; outil d'archivage de fichiers ar ; outil d'archivage de librairies Les processus - l'exécution de programmes * 3 fichiers standards sont associés à toute exécution de programme : l'entrée : stdin la sortie : stdout l'erreur : stderr * Il est possible de les rediriger : programme sortie 2>erreur (en sh) ou programme & sortie (en csh) * Il est possible de les enchaîner (pipes) : programme1 | programme2 | programme3 * Une exécution prend par défaut le clavier et l'écran comme fichiers standards et donc l'utilisateur doit attendre la fin, avant de taper une autre commande. * Il est donc possible d'envoyer un programme s'exécuter en tâche de fond (background) : programme sortie & * On peut alors avoir plusieurs processus actifs en meme temps lors d'une meme session. * Des commandes permettent de gérer ces processus utilisateurs : ps ; donne la liste des processus jobs ; donne la liste des jobs en cours kill ; permet de tuer/suspendre/relancer un processus fg ; fait passer au 1er plan un processus bg ; fait passer en arriere plan un processus renice ; reduit la priorite d'un processus Ctrl-C ; interrompt un processus Ctrl-Z ; suspend un processus Les fichiers de configuration .profile : sh .login, .cshrc : csh .exrc : vi .mailrc, .forward : mail etc X-Window * standard d'interface graphique * multi-fenêtrage * dissociation de la ressource de calcul et de la ressource d'affichage * outil de programmation * architecture client-serveur basée sur un protocole de communication normalisé, X11 * géré par le X-Consortium et supporté par tous les constructeurs * sources disponibles et donc gratuit * de plus en plus de programmes applicatifs - xterm : émulateur de terminal alphanumerique - window-managers : fvwm - xclock, xload, xbiff - emacs - xfig - ghostview - netscape - etc Les publications * De nombreux ouvrages ont été écrits sur Unix. * Ils traitent soit de : - sa structure interne - son utilisation - sa programmation en C - X-Window - TCP/IP et Internet * Les documentations des constructeurs sont de taille raisonnable et dans l'ensemble assez lisible. * Il ne faut pas oublier de faire un usage intensif de la commande 'man'.