IFT 6800 – Démonstration 1 But de la démonstration Préalables
Transcription
IFT 6800 – Démonstration 1 But de la démonstration Préalables
Département d’informatique et de recherche opérationnelle IFT 6800 – Démonstration 1 But de la démonstration Cette démonstration vous familiarisera avec les commandes de base du système d’exploitation Linux. Préalables Assurez-vous d’avoir activé votre compte tel qu’expliqué à l’url http://support.iro.umontreal.ca/doku.php?id=compte:nouveau . Révisez vos notes de cours de la séance 2. Assurez-vous de comprendre en particulier les droits d’accès sur les fichiers (« Sécurisation de fichiers et de répertoires »). Si vous souhaitez plus d’explications, lisez la section 3.5.10 du document http://www-etud.iro.umontreal.ca/~semunix/documentIRO/semunix-manuel.pdf . Ouverture de session Pour ouvrir une session Linux (se « logger »), tout dépend du poste sur lequel vous êtes installé. Vous pourrez faire vos travaux pratiques et ces démos peu importe le type de poste sur lequel vous vous trouvez, car on peut accéder à l’environnement Linux à partir de Windows. Poste Linux Entrez votre mot de nom d’utilisateur et votre mot de passe. Vous êtes dans l’environnement KDE. Pour ouvrir une fenêtre de commande (une « coquille »), cliquez sur l’icône du menu principal (en bas à gauche), aller dans « Système », puis cliquez sur « Terminal ». Poste Windows Dans le menu « Démarrer », choisir Programmes » Putty SSH » Putty. Lorsque l’application a démarré, entrer « triton » dans la boîte « Host Name », assurezvous que le choix « SSH » est bien coché, puis faire « Open ». Répondre « Oui » à la boîte de dialogue qui suit, puis ouvrez une session en entrant votre nom d’utilisateur et votre mot de passe. Une fenêtre (« coquille ») pour entrer vos commandes est alors prête. Note : vous pouvez télécharger gratuitement le logiciel Putty qui permet l’ouverture de session à distance. Voir http://support.iro.umontreal.ca/doku.php?id=logiciel:windows&s=putty pour plus de détails. 1 À partir de votre ordinateur portable Windows Vous pouvez connecter votre portable au réseau pour faire cette démonstration et pour les autres travaux dans le cadre des cours au DIRO. Consultez http://support.iro.umontreal.ca/doku.php?id=reseau:acces-libre&s=portable pour vous connecter. Vous aurez également besoin du logiciel « Putty » décrit à la section précédente (« Poste Windows »). Exercices Vous trouverez de la théorie complémentaire à celle qui a été vue en cours, dans le document d’introduction à Linux suivant : http://www-etud.iro.umontreal.ca/~semunix/documentIRO/semunix-manuel.pdf . Nous utiliserons ce document pour nous guider. Vous pouvez l’acheter imprimé et relié, mais ce n’est pas indispensable, car il est disponible en ligne. Voir le site http://www-etud.iro.umontreal.ca/~semunix pour plus d’informations. Syntaxe de base d’une commande (Section 3.5 du document) À l’invite de commande (prompt), on entre les commandes Linux suivies du retour chariot pour les valider. Une commande typique a la forme suivante : commande [options] [paramètres] La commande est le nom de la commande, les options modifient le comportement de la commande, et les paramètres sont les entrées du programme, celles sur lesquelles la commande agit. Ce sont souvent des noms de fichiers. Nous allons exercer un certain nombre de ces commandes dans ce qui suit. Le format est le suivant : présentation de la commande (voir la section du manuel mentionné plus haut lorsque le manuel est cité), puis quelques exercices numérotés. Un truc Pour rappeler les dernières commandes que vous venez de taper, tapez la flèche vers le haut. Commandes de base pwd (Section 3.5.2) – afficher le répertoire courant 1) pwd cd (Section 3.5.3) – changer de répertoire courant 2) 3) 4) 5) 6) 7) 8) cd nsmail pwd cd .. (se déplacer vers le répertoire parent du répertoire courant) pwd cd /u/dift6800/HTML pwd cd 2007-ete 2 9) pwd 10) cd .. 11) pwd 12) cd (revient à votre répertoire personnel) 13) pwd ls (Section 3.5.4) – lister le contenu d’un répertoire 14) ls (lister les fichiers du répertoire courant) 15) ls -l (lister les fichiers avec plus de détails) 16) ls –a (lister tous les fichiers, même ceux dont le nom commence par .) 17) ls /u/dift6800/HTML (lister les fichiers dans un autre répertoire) 18) Combinez les options en tapant ls –la /u/dift6800/HTML (ceci combine l’affichage des détails et des fichiers dont le nom commence par .) 19) cd /u/dift6800/HTML 20) ls i* (lister tous les fichiers dont le nom commence par i) 21) ls –l *l (lister les détails de tous les fichiers dont le nom se termine par l) 22) comparer ls –l et ls –lh. Quelle est la différence ? 23) cd mkdir (Section 3.5.5) – créer un répertoire 24) se placer dans votre répertoire de travail (cd) 25) mkdir ift6800 (création du répertoire ift6800 dans votre répertoire) 26) ls -l 27) cd ift6800 28) pwd 29) mkdir devoirs 30) mkdir demos 31) cd demos 32) mkdir 1 33) cd 34) pwd 35) cd ift6800/demos/1 36) mkdir trash 37) ls rmdir (Section 3.5.6) – supprimer un répertoire Note : À partir d’ici, à vous de faire ls -l lorsque vous le souhaitez pour constater le résultat des commandes d’exercice. 38) rmdir trash 39) après s’être assuré du résultat de la commande, revenir dans votre répertoire de travail 3 man (Section 3.5.12) – consultation de l’aide en ligne 40) trouver la documentation de ls en faisant man ls et trouver la signification de l’option –R 41) quitter man en faisant q, puis tester l’option -R pico (Section 4.2.3) – édition de fichiers avec Pico L’éditeur de texte utilisé pour nos cours sera « pico », décrit dans le document d’introduction à Unix. Lisez la section qui le décrit. Notez cependant que, pour copier/coller dans une console, il est souvent suffisant sous Linux de sélectionner le texte avec la souris (ceci copie le texte automatiquement) et de cliquer le bouton du milieu de la souris (ceci colle le texte). Ceci vaut dans toutes les applications texte. Il existe également d’autres éditeurs (voir section 4.2.5). 42) se placer dans le répertoire ift6800/demos/1 43) pico 44) créer un fichier toto.txt dans ce répertoire avec quelques lignes de votre cru 45) quitter pico 46) visualiser le contenu du fichier avec les commandes cat et more (utiliser man pour des détails sur ces commandes) 47) afficher la première ligne de toto.txt en faisant head -1 toto.txt 48) afficher les deux dernières lignes de toto.txt en faisant tail -2 toto.txt cp, mv, rm (Sections 3.5.7 et suivantes) – opérations sur les fichiers 49) se placer dans le répertoire ift6800/demos/1 50) renommer votre fichier avec la commande mv toto.txt toto2.txt 51) s’assurer avec ls que les résultats sont justes 52) créer un répertoire test ainsi qu’un sous répertoire à test appelé alpha 53) renommer le répertoire alpha en beta avec mv 54) dupliquer votre fichier de test toto2.txt en retournant dans le répertoire où il se trouve et en faisant cp toto2.txt toto3.txt 55) dupliquer le fichier toto3.txt en faisant cp toto3.txt toto4.txt 56) copier tous les fichiers dont le nom commence par « toto » dans le répertoire test/beta en entrant la commande cp toto* test/beta 57) détruire le fichier toto2.txt en faisant rm –i toto2.txt (répondre Y) zip, unzip – compression/décompression de fichiers 58) se placer dans le répertoire ift6800/demos/1 59) zip toto.zip toto3.txt (compression) 60) rm –i toto3.txt 61) unzip toto.zip (décompression et restauration de toto3.txt) 62) détruire toto.zip 4 chmod (Section 3.5.10) – droits d’accès aux fichiers 63) se placer dans le répertoire ift6800/demos/1 64) ls –l et observer les droits des fichiers et des répertoires. Ils sont classés dans l’ordre {utilisateur, groupe, autres}, r étant le droit de lecture, w le droit d'écriture et x celui d’exécution. 65) chmod u–r toto3.txt 66) ls –l toto3.txt (constater le changement des lettres d’accès) 67) cat toto3.txt (plus d’accès) 68) Restaurer l'ancien état avec chmod u+r toto3.txt. 69) Accorder les droits de lecture (r) à l’utilisateur et aux membres de son groupe (g) en faisant chmod ug+r toto3.txt, et faire ls -l 70) Taper chmod u-w toto3.txt. Essayer de modifier le fichier via l'éditeur de texte. Restaurer l'ancien état par chmod u+w toto3.txt. 71) chmod -w .; ls –l 72) Essayer de créer un nouveau fichier dans le répertoire. Restaurer l’ancien état par chmod +w . (le point fait partie de la commande et désigne le répertoire courant) 73) Créez dans votre répertoire racine un répertoire incoming où n’importe quel membre de votre groupe peut y déposer des fichiers mais sans pouvoir lire le contenu ni du répertoire ni des fichiers déposés. Vous devez disposer de tous les droits sur ce répertoire et les utilisateurs qui ne font pas partie de votre groupe ne doivent disposer d’aucun droit. Vous pouvez tester votre solution en demandant à un autre étudiant de copier son fichier toto4.txt dans votre répertoire incoming. Gestion des processus Sous Linux, tous les programmes qui « tournent » correspondent à un (parfois plusieurs) processus. On peut les observer et contrôler ceux qui nous appartiennent avec certaines commandes. Les processus ont plusieurs caractéristiques. Nous nous intéresserons surtout au numéro unique du processus et à son utilisateur. 74) ps -f (liste les processus sur le terminal utilisé, pour l’utilisateur) On observe une colonne pour l’utilisateur (UID), pour le numéro du processus (PID) et pour la commande lancée (CMD). 75) ps -e (liste tous les processus sur la machine, de tous les utilisateurs) 76) ps –elf (liste détaillée de tous les processus) 77) ps –fu root (liste des processus de l’utilisateur spécifié, ici l’utilisateur root) 78) lancer la commande sleep 10d, elle ne retournera pas et bloquera l’utilisateur 79) tuer ce processus bloquant en faisant CTRL+c 80) recommencer le processus bloquant sleep 10d 81) interrompre le processus cette fois-ci par CTRL-z Le processus est interrompu, mais il existe toujours. 5 82) ps –f (le processus sleep est visible dans la liste) 83) relancer le programme par fg (foreground) 84) l’interrompre à nouveau par CTRL-z 85) taper bg (background). Maintenant, le programme s’exécute en tâche de fond 86) déterminer le PID du processus avec ps –f 87) tuer le processus par la commande kill –KILL PID_DU_NO_PRECEDENT. 88) faire top pour voir les processus qui tournent, h pour de l’aide, q pour quitter Note : Vous pouvez lancer une commande en arrière-plan dès son invocation sur la ligne de commande en la terminant avec un &. Par exemple, sleep 10d &. Commandes diverses Pour les exercices qui suivent, il vous faut télécharger un fichier d’Internet vers votre compte du DIRO. Sous Windows Lancer le fureteur Firefox et aller sur la page de cette démonstration et télécharger le fichier texte « exemple.txt ». Le sauvegarder dans le répertoire r:\ift6800\demos\1. Vous noterez que Windows fournit un « pont » entre son système de fichiers bien connu et votre compte du DIRO sous Linux via le lecteur « R: ». Toutes les opérations faites sur ce lecteur sont instantanément reflétées sur votre compte Linux. Sous Linux Lancer le fureteur Firefox et aller sur la page de cette démonstration et télécharger le fichier texte « exemple.txt ». Le sauvegarder dans le répertoire ift6800/demos/1. grep – recherche de lignes dans un fichier 89) afficher le contenu du fichier exemple.txt avec cat 90) grep banane exemple.txt affiche les lignes contenant « banane » 91) grep pomme exemple.txt sort – tri des lignes d’un fichier 92) sort exemple.txt 93) sort –r exemple.txt (ordre inverse) Pipelines de commande (s’il reste du temps) Les commandes peuvent être combinées sous Linux. C’est-à-dire que la sortie d’une première commande sert d’entrée à une seconde, et ainsi de suite. Ce chaînage peut devenir très puissant. La syntaxe d’un tel chaînage est simplement cmd1 | cmd2 | cmd2 | etc. 6 Ce qui signifie que la sortie de la cmd1 est utilisée comme entrée de la cmd2, etc. On utilise la barre verticale (« | ») pour chaîner les commandes. 94) sort exemple.txt | head -1 95) ls –l | sort –r 96) cat exemple.txt | sort –r | head -2 | tail -1 Quitter un terminal Faites simplement exit. Sources Ce document est une adaptation d’une démonstration similaire, d’auteur inconnu, faite en 2005 pour le cours ift6800 à l’Université de Montréal. Il s’inspire et cite le manuel des séminaires d’introduction à Unix disponible à http://www-etud.iro.umontreal.ca/~semunix/. Rédigé par Fabrizio Gotti, été 2007. 7