440 likes | 535 Views
Projet informatique 2A Séances de soutien. Ces transparents s’inspirent largement des cours 1A PET (M. Desvignes) et PMP (R Bressoux, E Moisan, N Castagne) Ainsi que des cours de Guillaume Allègre (silecs.info) Merci à eux. Planning prévisionnel. Séance I. L’environnement LINUX
E N D
Projet informatique 2A Séances de soutien Ces transparents s’inspirent largement des cours 1A PET (M. Desvignes) et PMP (R Bressoux, E Moisan, N Castagne) Ainsi que des cours de Guillaume Allègre (silecs.info) Merci à eux
Planning prévisionnel Séance I. L’environnement LINUX Premier programme de l'année scolaire Compilation et exécution Types de base Rappel sur les E/S, Structures de contrôle, fonctions Séance II. Compilation séparée et Makefile Types structurés, tableaux et chaînes de caractères Entrées sorties fichier Séance III Allocation dynamique Types abstraits ; exemple des listes Récursivité Séance IV Débogueur (DDD, Valgrind) Arbres et graphes
L’environnement informatique à Phelma Matériel et environnement Le minimum en Unix et GNU/Linux
Matériel et environnement Phelma Polygone : 6 salles de TDs informatisées (140 PCs) 2 salles libre-service (70 PCs, 2 imprimantes) Phelma Minatec : 4 salles de TDs informatisées (100 PCs) 2 salles libre-service (52 PCs, 3 imprimantes) Phelma campus : 2 salles de TDs informatisées (50 PCs) 2 salles libre-service (40 PCs, 2 imprimantes) Quotas espace disque : 150 Mo pour le stockage des emails. 200 Mo dans votre répertoire personnel. Quotas d’impression : 50 pages recto/verso par mois cumulables. Non limité en salle de TDs.
Matériel et environnement Première connection sous GNU/Linux GNU/Linux = GNU is Not UniX un système d'exploitation libre, multi-tâche, multi-plateformes, multi-utilisateurs. http://www.debian.org Distributions : http://www.fr.redhat.com http://www.centos.org CentOS 6 Interfaces graphiques conviviales : GNOME KDE Afterstep …
Matériel et environnement ! Première connection sous GNU/Linux • Compte personnel Identifiant (username) : ______ Mot de passe (password) : ______ À changer immédiatement
Matériel et environnement Première connection sous GNU/Linux • Le Bureau
Matériel et environnement Première connection sous GNU/Linux • Quelques applications utiles Outils généraux : • OpenOffice : Outil bureautique complet, gratuit et compatible avec Microsoft Office • Firefox : navigateur Web gratuit • Evince : « document viewer » (fichiers pdf, etc.) • Gimp : éditeur d’images • Outils essentiels pour le développement • Éditeurs de code, en particulier Gedit • le Terminal : accès à tout l’ordinateur en « ligne de commande » Toutes les applications peuvent être lancées soient depuis le bureau (menu), soit depuis un Terminal (suite du cours)
Matériel et environnement ! Liens Internet utiles • avec un navigateur internet (par exemple Firefox) À faire immédiatement ! http://login.minatec.grenoble-inp.fr - Pour changer son mot de passe (non modifiable directement depuis les machines). http://webmail.minatec.grenoble-inp.fr - Site mails pour consulter sa messagerie hors de Phelma. http://phelma.grenoble-inp.fr - Site web de l’école. http://intranet.phelma.fr - Intranet de l’école accessible avec votre compte personnel et mot de passe. http://prism.minatec.inpg.fr - Site d’informations et de support du service informatique (Webmail, Wifi…). http://tdinfo.phelma.grenoble-inp.fr/2Aproj/ - Site du Projet Informatique 2A SEI / SICOM http://tdinfo.phelma.grenoble-inp.fr/ - Cours C 1ere année PET : bonne référence !
Matériel et environnement ! Messagerie et Webmail Adresse mail : Prenom.Nom@phelma.grenoble-inp.fr - Consultation locale sur Phelma en utilisant le logiciel Mozilla. • Consultation avec un navigateur internet (par exemple Firefox) : Webmail : https://webmail.minatec.grenoble-inp.fr help@phelma.grenoble-inp.fr Adresse mail à utiliser en cas de problème informatique envoyer un message avec une description précise de la situation.
Le minimum en Unix / Linux Répertoires et fichiers L’espace de stockage du disque dur est organisé sous la forme de Répertoires et de Fichiers. Répertoires= dossier contenant des fichiers et d’autres répertoires (directory en anglais) Fichiers= fichier texte, image, exécutable (applications) .... Les répertoires et fichiers sont organisés sous la forme d’une arborescence à partir du répertoire racine / (cf. diapo suivante).
Différences avec Windows I Pas de notion de lecteur C: D: etc. I Tout est dans une même arborescence, de racine / I Les répertoires sont séparés par des / et non des \ I Existence de liens symboliques ln -s fichier lien Sous windows, les liens sont de simples fichiers .link I Des permissions explicites
/ = racine /stk /tmp ... /users /bin /lib ... phelma ens ... ... phelma2014 phelma2013 ... toto titi ... info1 info2 truc.txt /users/phelma/phelma2014/toto/info1/ /users/phelma/phelma2014/toto/info2/ /users/phelma/phelma2014/toto/truc.txt Le minimum en Unix / Linux Répertoires et fichiers
! Le minimum en Unix / Linux Répertoires et fichiers • Dénomination des fichiers : nomFichier.ext Extension ext nomFichier Utiliser leslettres de l’alphabet, les chiffres, le tiret - et le souligné _ Pensez à mettre une extensionsignificative à vos fichiers : .txt = fichier de texte .c = fichier source en langage C .h = fichier en tête en langage C .exe (ou rien) = fichier exécutable .doc = fichier Word .odg = fichier OpenOffice .tar .tar.gz .tgz .zip : archives majuscules et minuscules non-équivalentes sous Unix. Ne pas utiliserd’espace, d’accent, de signes de ponctuation, d’accolades ou de signes tels que @, $, %, &, etc … Utilisez des noms significatifs.
Le minimum en Unix / Linux Le Terminal • Terminal ? Historiquement :Ensemble Outils servant à communiquer avec l’ordinateur (clavier/écran/imprimante) Sous Unix : désigne souvent l'émulateur de terminal textuel • (term, xterm, tty, ...) • Interpréteur de commandes les terminaux lancent un interpréteur de commandes (Command Line Interpreteur ou Shell) • Acquière (interprète) les commandes de l'utilisateur en texte • Exécute les commandes (lien avec l'OS) • Retourne le résultat (en texte) Commandes entrées par l'utilisateur Interpréteur de Commandes Système d'exploitation Exemple : cp fichier1.txt fichier2.txt Vérification de syntaxe puis demande d’exécution de la copie Copie effectuée si possible et retour d'erreurs ou succès au terminal
Le minimum en Unix / Linux Le Terminal • Fonctions du terminal Tout faire avec le système d’exploitation à l’aide de commandes textuellesexprimées dans un langage (le langage « Shell ») Naviguer dans les fichiers, créer un fichier, lancer un programme, un logiciel, … Outil essentiel de tout utilisateur décent de Linux (et notamment tout programmeur) • Accès au terminal : - menu déroulant : Applications > Outils de système > Terminal - bouton droit de la souris : Ouvrir un terminal en tapant la commande Unix pwd (cf. ci après), on obtient le chemin du répertoire courant : /users/phelma/phelma2014/toto • Exemple :
Ligne de commande vs interface graphique Inconvénients de la ligne de commande apprentissage plus long efficacité moindre (utilisateur débutant) mémorisation nécessaire (partiellement) domaine d'application limité (mais pas tant que ça...) Avantages de la ligne de commande automatisation aisée efficacité (rapidité) supérieure (utilisateur aguerri) ressources négligeables (CPU, réseau...) expressivité plus forte (options) modularité et extensibilité (une tâche, un outil) compréhension et contrôle des actions Seule méthode d'administration des stations sans serveur graphique (serveur notamment) G.
Découverte du shell Le prompt (invite de commandes) I utilisateur courant I nom de machine I répertoire courant I $ ou # : terminateur I ... configurable à l'extrême I un curseur ! G
Découverte du shell - quelques commandes id Qui suis-je ? pwd Où suis-je ? uname -a À qui ai-je l'honneur ? lsb_release -a Mais encore ? ls Liste les fichiers cd Changement du répertoire courant man Page de manuel d'une commande cat Affichage du contenu d'un fichier
Commandes : syntaxe générale Syntaxe : commande [options] [- -] [paramètres] Exemples : I ls --help I ls -a I ls --all I ls -al I ls -l .bashrc I Remarques : quelques exceptions I find . -name '*.tex' -print I dd if=/dev/hda1 of=hda.img bs=512 G.
Commandes internes et externes Commandes d'identification I which : commandes externes (fichiers) I type (-a) : commandes connues du shell I whereis : binaire et page de man d'une commande Les principaux types de commandes I commande externe (fichier exécutable) - hashed I commande interne ou primitive shell (builtin) I mot-clé du shell, ex. if, for I Exo : déterminer le type des commandes suivantes cd, cp, ls, which, type, echo
Documentation - formats et logiciels aide en ligne de commande ls --help I aide de bash : help (commandes internes) I pages de manuel : man I info : la documentation GNU (voir aussi pinfo, tkinfo) I et encore : des pages .html, des fichiers README, .chm... voir /usr/share/doc/ I navigateurs d'aide (Gnome, KDE...) : interne, man, info...
Documentation - manpages I man ls, man man I Neuf sections 1. commandes util. 4. périphériques 7. conventions 2. appels noyau (C) 5. fichiers conf. 8. commandes admin. 3. appels bibli. (C) 6. jeux 9. routines noyau man (1) man, man 7 man I Parties génériques : Nom, Synopsis, Description, Auteurs, Pager less intégré à la commande man : recherche : /motif, n (next), N (previous), . . . quitter : q G.
Gestion des fichiers et répertoires Commandes courantes I informatives : ls, cat I modificatrices : touch, cp, mv, rm I répertoires (informatives) : pwd, cd, du, tree I répertoires (modificatrices) : mkdir, rmdir Spécificités Unix I infos détaillées : stat I permissions : chmod, chown,chgrp I liens : ln (-s), readlink
Récapitulatif : chemins relatifs et absolus Chemins absolus : exemples ls /home/toto/Linux ls ~toto/Linux ls ~/Linux Chemins relatifs : exemples ls Linux ls ./Linux ls ../AutreRepertoire
Chemin relatif et absolu "chemin absolucommence par « / » , se lit depuis la racine. Exemple : /users/phelma/phelma2012/toto/info1/ désigne le répertoire info1 de l’étudiant toto, arrivé en 2012 chemin relatif, ne commence pas par « / » se lit à partir du « répertoire courant » dans lequel on est. Exemples : on suppose que le « répertoire courant » est /users/phelma/phelma2012et que l’utilisateur est toto titi désigne le répertoire /users/phelma/phelma2010/titi ~/truc.txt désigne le fichier /users/phelma/phelma2011/toto/info1/truc.txt <un point>désigne le répertoire courant /users/phelma/phelma2010 <deux points> désigne le répertoire “du dessus” /users/phelma désigne le répertoire /users/phelma/phelma2010 ••/ •/toto/truc.txt ••/ ••/phelma2010
Le minimum en Unix / Linux Commandes de base – suite : cd ..: remonter d ’un cran dans l ’arborescence cd ../..: remonter de deux crans dans l ’arborescence cd ./nomRep: descendre dans nomRep depuis le répertoire courant cd /chemin:se positionner dans chemin depuis la racine (chemin absolu) cd ~: retourner directement dans son répertoire principal Impression de fichiers texte lp –d nomImprimante nomFichier.ext
Session utilisateur Comptes utilisateurs : session : login/mot de passe (username/password) homedir : répertoire personnel (~/) Permissions d'accès aux ressources (fichiers, processus) : utilisateur groupe autres Un compte unique d'administrateur (super-utilisateur) : root Des comptes services pour les tâches système : mail, impressions, . . . des droits restreints (par rapport à root) sécurité accrue en cas de bug ou compromission
Permissions sur les entrées de répertoires Trois cibles de permissions u=user : utilisateur propriétaire g=group : groupe propriétaire o=other : tous les autres (a=all : tout le monde) Trois types de droits sur fichier et sur répertoire • r=read : lecture listage • w=write : écriture ajout/suppression fichier • x=exec : exécution traversée • X=exec : conditionnelle traversée G.
Gestion des permissions ls -l file.txt - rw- r- - r- - 1 toto users 2736 Sep 16 16:10 file.txt ( r = read , w = write , x = exécuter ) propriétaire (u) groupe (g) autres (o) tous (a) pour modifier ces permissions : chmod [ugoa] [+-] [rwx] chmod a+w file.txt ls -l file.txt -rw-rw-rw- 1 toto users 2736 Sep 16 16:14 file.txt
Exo Session utilisateur 1 - Créez un fichier sur le home du voisin dont le login est « sonlogin » : touch ~sonlogin/bidon 2 - Créez un répertoire partage sur votre home et modifier les droits : mkdir ~/partage chmod a+rw ~/partage 3- Essayer maintenant de créer un fichier dans le répertoire partage de votre voisin 4- Connectez vous la machine de votre voisin ssh machine 5- Essayez de créer dans le répertoire /tmp de la machine du voisin : touch /tmp/fichier_bidon_monlogin.txt
Globbing (expansion des noms de fichiers) But Ne pas avoir à taper le nom de tous les fichiers en argument. Exemple ls *.rc Caractères spéciaux * N’importe quelle chaine de caractères ? Un caractère quelconque [a-z] Un caractère parmi ceux listés Protections contre l'interprétation par le shell I ". . . " Protège partiellement . . . de l'interprétation par le shell I '. . .' Aucune interprétation de . . . I \* Aucune interprétation du caractère suivant
Exo Globbing • Listez tous les fichiers commençant par « . » dans votre home • Dans votre répertoire courant, créez en une commande les fichiers suivants: • annee1 Annee2 annee4 annee45 annee41 annee510 annee_saucisse banane • Créez le répertoire Year dans votre répertoire courant. • En une commande déplacez les fichiers précédemment créés dans le répertoire Year. • Dans le réperoire Year, listez tous les fichiers se terminant par 5 commençant par annee4 commençant par annee4 et de 7 lettres maximum commençant par annee avec aucun chiffre numérique contenant la chaîne ana commençant par a ou A • Copiez les fichiers dont l'avant-dernier caractère est un 4 ou 1 dans le répertoire /tmp en une seule commande. • More on http://en.flossmanuals.net/command-line/ch014_multiple-files/
Recap Commandes de base du terminal Toutes ces commandes sont à taper dans un terminal. Syntaxe des commandes Unix commande –options arguments Commandes de base : pwd donne le répertoire courant (« Print Working Directory ») cd changer de répertoire courant (« Change Directory ») ls listing des fichiers et répertoires du répertoire courant (« list ») rm détruire un fichier (« remove ») mv déplacer ou renommer un fichier (« move ») cp copier un fichier (« copy ») mkdir créer un répertoire (« Make Directory ») rmdir détruire un répertoire (« Remove Directory ») tar Créer / extraire une archive .tar ou .tar.gz ou .tgz zip Créer une archive .zip unzip Extraire une archive .zip
I.2. Le minimum en Unix / Linux I.2.2. Commande de base du terminal Astuces dans le Terminal Complétion automatique Utilisez la « complétion automatique » avec la touche tabulation ! Le terminal ajoute tout seul le reste des commandes et des chemins ! Historique Les anciennes commandes sont accessibles avec la flèche « haut » Également avec la commande history Copier / coller Le copier se fait automatiquement via une sélection du texte (clic gauche) Le coller se fait grâce au bouton du milieu de la souris Aide en ligne Des détails sur une commande ? Utilisez man <command> !
I.2. Le minimum en Unix / Linux I.2.2. Commande de base du terminal Commandes de base – exemples : ls -l: liste détaillée des fichiers et répertoires du rep courant ; ls -l fich.ext : détails sur le fichier fich.ext ; ls *.c: donne la liste des fichiers .c ; ls ~castagnn: liste des fichiers à la racine du compte de l’utilisateur castagnn more fich.ext: donne la liste des fichiers .c ; mkdir nomRep: créer un répertoire nomRep ; rmdir nomRep:détruire le répertoire nomRep(si vide). rm nomFich.ext: détruit nomFichier.ext définitivement. mv chemin1/nom1.ext chemin1/nom2.ext : déplace et renomme un fichier ; mv chemin1/*.c chemin2/. : déplace tous les fichiers .c. cp : copie de fichiers
Redirections - canaux Le shell définit 3 canaux • STDIN (0) entrée standard - clavier par défaut • STDOUT (1) sortie standard - écran (terminal) par défaut • STDERR (2) sortie d'erreur - écran (terminal) par défaut Redirection ls -1 > liste.txt La sortie du programme ls est redirigée vers un fichier. Pour ajouter au fichier (sans écraser l'ancien contenu) : ls -1 >> liste.txt 2> redirection de la sortie d'erreur &> redirection des deux sorties < redirection d'entrée, ex. cat < liste.txt G.
Pipes et filtres ls -1 | wc sortie de ls canalisée vers l'entrée du filtre wc. find /etc |& wc StdOut et StdErr fusionnées puis canalisées Exemples 1. ls ~/ >> liste.txt 1. cat taper du texte puis Ctrl+D 2. cat liste.txt | wc -l 3. wc -l liste.txt 4. wc -l < liste.txt 5. cat < liste.txt | wc -l 6. wc -l liste.txt l2.txt l3.txt 7. cat liste.txt l2.txt l3.txt | wc -l
Exo Pipes et filtres • Copiez le fichier /etc/passwd dans votre home en ne conservant que les quatre premières colonnes • Utilisez cut et cat pour cela • Calculez le nombre de login • Avec head et tail affichez les 5 premières puis 5 dernières lignes du fichier. Conserver ces résultats dans un autre fichier. • Triez le fichier sur le nom de login puis sur l'UID Utilisez sort • More on http://en.flossmanuals.net/command-line/ch016_piping/
Processus et tâches Gestion des tâches (jobs) commande & : lancer en arrière-plan Ctrl-Z : met en pause Ctrl-C : arrête bg : redémarre en arrière-plan le processus en pause fg : remet en avant-plan Affichage des processus top : affiche les ressources consommées par les processus ps : Process Show pstree : arbre des processus! init
Contrôle des processus et signaux Rechercher un processus ps : rapport sur les processus en cours Arrêter un processus kill [options] PID kill -TERM 1955 killall commande killall gimp pkill [-signal] Les principaux signaux SIGTERM (15) : terminer normalement (proprement) SIGKILL (9) : terminaison forcée (non ignoré) SIGSTOP (19) : arrêt temporaire (pause) (non ignoré) SIGCONT (18) : reprise d'un processus arrêté SIGINT (2) : terminaison interactive (Ctrl-C) SIGTSTP (20) : arrêt temporaire interactif (Ctrl-Z)
Exo : Processus et tâches • Démarrez gedit et mettez le en tâche de fond • Avec la commande top, trouvez le processus gedit et terminez le • Démarrez gedit directement en tâche de fond avec « & ». remettez le en foreground et stoppez le avec Ctrl+C • Lancez ls -R / dans un terminal. Dans un autre terminal trouver le processus avec la commande PS et stoppez le, redemarrez le, puis terminez le.
Exemple d’utilisation. A vous de jouer ! $ pwd . . . . . . . . . . . . . . . . . . . . . $ man pwd . . . . . . . . . . . . . . . . . . . . . $ cd Desktop . . . . . . . . . . . . . . . . . . . . . $ pwd . . . . . . . . . . . . . . . . . . . . . $ mkdir info2A . . . . . . . . . . . . . . . . . . . . . $ cd ./info2A . . . . . . . . . . . . . . . . . . . . . $ mkdir soutien . . . . . . . . . . . . . . . . . . . . . $ ls . . . . . . . . . . . . . . . . . . . . . $ ls ~castagnn/soutien. . . . . . . . . . . . . . . . . . . . $ cp ~castagnn/soutien/part1.tgz ./soutien $ cd soutien . . . . . . . . . . . . . . . . . . . . . $ ls . . . . . . . . . . . . . . . . . . . . . $ tar –zxvf part1.tgz . . . . . . . . . . . . . . . . . . . . . $ ls . . . . . . . . . . . . . . . . . . . . . $ cd part1 . . . . . . . . . . . . . . . . . . . . . $ more README.txt . . . . . . . . . . . . . . . . . . . . . $cp README.txt tmp.txt . . . . . . . . . . . . . . . . . $ mv tmp.c monfichierc.txt . . . . . . . . . . . . . . . $ gedit monfichier.txt . . . . . . . . . . . . . . . . . . . . . $ gedit monfichier.txt & . . . . . . . . . . . . . . . . . . . $ rm monfichier.txt . . . . . . . . . . . . . . . . . . . . . Affiche le répertoire courant (votre « home ») Affiche l’aide de la commande pwd Entre dans le répertoire Desktop Affiche le répertoire courant Crée le répertoire info2A. Il apparaît sur votre bureau ! Entre dans le répertoire info Crée le répertoire ‘soutien’ dans info Liste le contenu du répertoire courant Liste le rép « soutien » de l’utilisateur castagnn Copie un fichier dans le répertoire seance01 Entre dans votre repertoire « soutien » Liste le contenu du répertoire courant Extrait les fichiers de l’archive part1.tgz Un répertoire part1 est apparu ! Entre dans le répertoire part1 Affiche le contenu du ficher texte README.txt Copie le fichier README.txt dans tmp.txt Renomme le fichier tmp.txt dans monfichier.txt Permet d’éditer le contenu de monfichier.txt Liste le contenu du répertoire courant Supprime le fichier monfichier.txt