Linux : origine, évolution et commandes de base

Document Details

DedicatedExponential

Uploaded by DedicatedExponential

Université Oran 1 - Ahmed Ben Bella

S. MAKHLOUF, M. C. B.

Tags

Linux commands Linux Operating Systems Computer science

Summary

This document is a presentation on Linux, covering its origins, evolution, and fundamental commands. The document is targeted at undergraduate level students of computer science in an educational setting.

Full Transcript

Linux : origine, évolution et commandes de Base Par : S. MAKHLOUF, M. C. B. à l’université Oran 1, Ahmed Benbella [email protected] Principe du système d’exploitation 2 Architecture d’un système UNIX 3 UNIX (1969)...

Linux : origine, évolution et commandes de Base Par : S. MAKHLOUF, M. C. B. à l’université Oran 1, Ahmed Benbella [email protected] Principe du système d’exploitation 2 Architecture d’un système UNIX 3 UNIX (1969) du “Bell Labs” Ken Dennis Thompson Ritchie Assembleur 🡪 Le langage C 4 Le DEC National Medal of Technology and Innovation, 1998 5 Minix, un OS Pédagogique (1987) Pr Andrew Tanenbaum 7 Le monde du logiciel libre (GPL) 1983 Richard Stallman 8 Le monde du logiciel libre (GPL) Liberté 0 : la liberté d’utiliser un logiciel quel que soit l’usage que vous en faites. Liberté 1 : la liberté d’étudier le fonctionnement du programme et de l’adapter à votre besoin. Liberté 2 : la liberté de redistribuer des copies afin d’aider votre voisin (au sens large du terme). Liberté 3 : la liberté d’améliorer le programme et de diffuser les améliorations au public à fin d’en faire bénéficier l’ensemble de la communauté. 9 Linux = (Minix + Unix) (1991) Linus 10 Distributions Linux 19 Red Hat 93 (1995) 19 92 11 Deb ou RPM ? 12 13 14 Donc, quelle distribution Linux Choisir ? 15 Distrowatch 16 Le Modèle OSI 17 Architecture de Linux 18 Le shell Linux sh : Bourne Shell ; bash : Bourne Again Shell ; ksh : Korn Shell ; csh : C Shell ; zsh : Z Shell ; tcsh : Tenex C Shell ; ash : A Shell ; dash : Debian Almquist Shell. 19 Le Bash : le shell par défaut seb@slyserver:/home/public> seb : c’est le nom de connexion, ou login de l’utilisateur, actuellement connecté au terminal ; slyserver : c’est le nom d’hôte (hostname), le nom logique de la machine raccordée au terminal ; /home/public : c’est la position actuelle du shell dans le système de fichiers ; > : c’est la terminaison standard du bash pour un utilisateur ($ ou #). 20 L’invite de commande un $ indique que l’utilisateur n’a pas de pouvoirs particuliers un # indique que l’utilisateur est l’administrateur root qui a tous les pouvoirs. 21 Syntaxe générale des commandes $ Commande [options] [arguments] ou # Commande [options] [arguments] 22 Premier exemple $ date $ pwd $ cal $ cal 12 1975 $ date;pwd;cal $ echo Bonjour les amis 23 Obtenir de l’aide $ date --help $ man date 24 Commandes internes et externes $ type date $ type pwd $ type cal $ type echo Exercice : Utilisez le Man de cal pour … 25 Le système de fichiers 26 Dossier Racine / Dossier Personnel Root Directory / Home Directory Root Director y Home Direct ory 27 Structure et nom de chemin Linux Un chemin absolu ou complet : démarre de la racine, commence par un /, décrit tous les répertoires à traverser pour accéder à l’endroit voulu, ne contient pas de. ni de.. Exemple : /home/toto/Docs/Backup/fic.bak 28 Structure et nom de chemin Linux Un chemin relatif : décrit un chemin relatif à une position donnée dans l’arborescence, généralement (mais pas toujours) depuis la position courante ; décrit en principe le plus court chemin pour aller d’un point à un autre ; peut contenir des points ou des doubles points ; 29 Structure et nom de chemin Linux Un chemin relatif : Ces trois affirmations ne sont pas des obligations : /usr/local/bin est un chemin complet ou absolu ; Documents/Photos est un chemin relatif : le répertoire Documents est considéré comme existant dans le répertoire courant ;./Documents/Photos est un chemin relatif parfaitement identique au précédent, sauf que le répertoire actif (courant) est explicitement indiqué par le point. «./Documents » indique explicitement le répertoire Documents dans le répertoire actif ; /usr/local/../bin est un chemin relatif : les.. sont relatifs à /usr/local et descendent d’un niveau vers /usr. Le chemin final est donc /usr/bin. 30 Les commandes de base 1) $ cd 2) $ pwd 3) $ ls 4) $ cd /boot 5) $ pwd 6) $ ls 7) $ cd /usr/local/bin 8) $ pwd;ls 9) $ cd../../lib 10) $ pwd;ls 11) $ cd 12) $ pwd;ls 31 Les commandes de base $ ls -l total 4568 -rw-r--r-- 1 seb users 69120 sep 3 2006 3i_rattrapage_2006.doc -rw-r--r-- 1 seb users 9632 sep 3 2006 3i_rattrapage_2006.odt -rw-r--r-- 1 seb users 6849 nov 17 2003 controle_1I2_mardi.sxw Exercice : Utilisez le Man de ls pour … 32 Créer/manipuler des fichiers $ touch fictest $ ls -l $ nano fictest 33 Créer/manipuler des répertoires $ mkdir Docs $ mkdir Docs/Photos $ mkdir -p Archives/Olds $ ls –R $ cp fictest Docs/ $ ls Docs/ $ cp Docs/ Archives/ $ ls –l Archives 34 Déplacer/Supprimer des fichiers/répertoires $ mkdir {rep1,rep2,rep3} $ touch txt1 txt2 txt3 $ mv txt1 txt1.old $ mv txt2 rep1/txt2 $ mv txt3 rep1/txt3.old Exercice : Que fait la commande mv ? $ rm fictest $ rm –r Docs Exercice : Effacez tous les fichiers et répertoires créés durant cette séance 35 Exercice 1. Créer dans votre répertoire personnel les répertoires/fichiers selon selon la méthode suivante : (a) Créer deux répertoires Unix et Python dans votre répertoire personnel. (b) Créer deux répertoires TP1 et TP2 dans le répertoire Unix. (c) Copier les deux répertoires TP1 et TP2 dans le répertoire Python. (d) Créer deux répertoires seance1 et seance2 dans le répertoire TP1 de Unix. (e) Créer deux fichiers exo1 et exo2 dans le répertoire seance1. (f) Copier les deux fichiers exo1 et exo2 dans le répertoire TP2 de Python. 2. Placez-vous dans le répertoire Python/TP1. Vérifiez que vous y êtes, puis, en une seule commande, placez-vous dans le répertoire Unix/TP2 en utilisant le chemin relatif du répertoire. Retournez dans Python/TP1, mais cette fois-ci, en utilisant le chemin absolu. Enfin, revenez à la racine de votre répertoire personnel. 3. Supprimer le répertoire TP1 de Python avec la commande rmdir. 4. Supprimer le répertoire TP2 de Python avec la commande rmdir, pourquoi la commande a échoué. Supprimer en une commande le répertoire TP2 de Python. 5. Déplacer le fichier exo1 dans le répertoire TP1 et supprimer les répertoires seance1 et seance2. 6. Renommer les fichiers exo1 et exo2 en respectivement exercice1 et exercice2. 7. Dessiner l’arborescence des fichiers contenus dans le répertoire personnel de manière théorique. Vérifier le à l’aide d’une commande. 36 Les canaux standards Un canal est un fichier, qui possède son propre descripteur par défaut, et dans lequel on peut ou lire ou écrire: Le canal d’entrée standard se nomme stdin et porte le descripteur 0. Le canal de sortie standard se nomme stdout et porte le descripteur 1. Le canal d’erreur standard se nomme stderr et porte le descripteur 2. On peut rediriger le canal d’erreur vers un autre fichier. 37 Redirections (En sortie) $ ls -l > resultat.txt $ cat resultat.txt $ ls -l > resultat.txt $ date >> resultat.txt $ cat resultat.txt 38 Redirections (En entrée) $ wc < resultat.txt Exercice : Que fait cette commande ? 39 Redirections (En Exercice) $ rmdir dossierx $ rmdir dossierx 2>error.log $ cat error.log Exercice : Que font ces deux commandes ? $ ls -l > resultat.txt 2>&1 $ wc < resultat.txt > compte.txt 40 Ouverture de canaux Les canaux standards sont au nombre de trois et numérotés de 0 à 2. La commande exec permet d’ouvrir sept autres canaux numérotés de 3 à 9. On a donc en tout dix canaux. $ exec 3>dump.log $ ls -l >&3 $ cat dump.log $ exec 3>&- 41 Pipelines / tubes Les tubes ou pipes permettent de rediriger directement le canal de sortie d’une commande vers le canal d’entrée d’une autre : $ ls -l > resultat.txt $ wc < resultat.txt Devient : $ ls -l | wc 42 Pipelines / tubes Exercice : Quel est le résultat des commandes suivantes : $ ls -l | wc | wc $ ls -l | wc > resultat.txt 43 Les Commandes de filtrage Une commande filtre est un programme sachant écrire et lire des données par les canaux standards d’entrée et de sortie. Il en modifie ou traite éventuellement le contenu. 44 Recherche de lignes grep [Options] modèle [Fichier1...] Soit le fichier /etc/passwd $ grep "root" /etc/passwd $ grep "^[b]" /etc/passwd $ grep –n "^[b]" /etc/passwd 45 Colonnes/champs cut -dc -fChamps fic1 $ cut -f1 /etc/passwd $ cut –d: f1 /etc/passwd Que fait la commande suivante ? $ grep "^[b]" /etc/passwd | cut -d: -f1,6 46 Décompte de lignes wc [-l] [-c] [-w] [-w] fic1 -l : compte le nombre de lignes -c : compte le nombre d’octets -w : compte le nombre de mots -m : compte le nombre de caractères $ wc –l /etc/passwd $ who | wc -l 47 Remplacement de caractères tr [options] original destination $ cat /etc/passwd | tr ":" "@" $ cat /etc/passwd | tr "a-z" "A-Z" Q: isoler l’adresse IP de votre machine ? $ ifconfig eth0 48 Délai d’attente $ sleep 10 49 Les droits d’accès $ id uid=1000(seb) gid=100(users) groupes=7(lp),16(dialout),33(video), 100(users) À chaque fichier sont associés un UID et un GID définissant son propriétaire et son groupe d’appartenance. $ ls -l 50 Les droits d’accès aux fichiers r : Le contenu du fichier peut être lu(…), chargé(…) en mémoire, visualisé(…), recopié(…). w : Le contenu du fichier peut être modifié(…), on peut écrire dedans(…). La suppression n’est pas forcément liée à ce droit(…). x : Le fichier peut être exécuté depuis la ligne de commande(???), s’il s’agit soit d’un programme binaire (compilé), soit d’un script (shell, perl...). 51 Les droits d’accès aux répertoires r : Les éléments du répertoire (catalogue) sont accessibles en lecture(…). w : Les éléments du répertoire (catalogue) sont modifiables et il est possible de créer(…), renommer(…) et supprimer(…) des fichiers dans ce répertoire. x : Le catalogue peut être accédé par CD et listé(…). Sans cette autorisation il est impossible d’accéder au répertoire et d’agir sur son contenu qui devient verrouillé. 52 Modification des droits des fichiers chmod modifications Fic1 $ touch fichier $ ls -l fichier -rw-r--r-- 1 root root 0 oct. 6 05:01 fichier $ chmod u-r,g+w,o=wx fichier $ ls -l fichier --w-rw--wx 1 root root 0 oct. 6 05:01 fichier 53 Modification des droits des répertoires $ mkdir rep $ ls -l drwxr-xr-x 2 root root 4096 oct. 6 05:08 rep $ chmod u-x,g+w,o=rwx rep $ ls -l drw-rwxrwx 2 root root 4096 oct. 6 05:08 rep 54 Changer de propriétaire et de groupe chown utilisateur fic1 chgrp groupe fic1 55 Les processus Un processus représente à la fois un programme en cours d’exécution et tout son environnement d’exécution (mémoire, état, identification, propriétaire, père...). 56 Les processus Liste des données d’identification d’un processus : 1. Un numéro de processus unique PID 2. Un numéro de processus parent PPID 3. Un numéro d’utilisateur et un numéro de groupe 4. Durée de traitement et priorité 5. Répertoire de travail actif 6. Fichiers ouverts 57 États d’un processus Durant sa vie (temps entre le lancement et la sortie) un processus peut passer par divers états ou process state : exécution en mode utilisateur (user mode) ; exécution en mode noyau (kernel mode) ; en attente E/S (waiting) ; endormi (sleeping) ; prêt à l’exécution (runnable) ; endormi dans le swap (mémoire virtuelle) ; nouveau processus ; fin de processus (zombie). 58 Lancement en tâche de fond 59 Backgroung, foreground, jobs Récupérer la main sous le shell si un processus est lancé un au premier plan. Il est possible de le stopper temporairement en tapant [Ctrl] Z : 60 Backgroung, foreground, jobs Le processus est stoppé : son exécution est suspendue jusqu’à ce qu’il est replacé au premier plan avec la commande fg : 61 Backgroung, foreground, jobs Obtenir la liste avec la liste des tâches de fond avec la commande jobs : 62 Backgroung, foreground, jobs La commande bg est exécutée sur une tâche de fond (job) stoppée pour le relancer en arrière-plan. Dans l’exemple le job 2 est relancé en arrière-plan : 63 Liste des processus La commande ps (process status) permet d’avoir des informations sur les processus en cours : 64 Liste des processus 65 Arrêt d’un processus / signaux Lorsqu’un processus tourne en tâche de fond, il ne peux pas être arrêté par une quelconque combinaison de touches, sauf en utilisant le gestionnaire de jobs avec fg et bg. Il peut être nécessaire de lui envoyer des signaux auquel il pourra éventuellement réagir. Pour cela il faut employer la commande kill. 66 Arrêt d’un processus / signaux Le signal est l’un des moyens de communication entre les processus. Lorsqu’on envoie un signal à un processus, celui­-doit doit l’intercepter et réagir en fonction de celui-­ci. Certains signaux peuvent être ignorés, d’autres non. 67 Arrêt d’un processus / signaux 68 Qu’est-ce qu’un script ? Un script est un fichier au format texte comprenant un ensemble de commandes écrites dans un langage interprété s’exécutant sur un système d’exploitation. 69 La mauvaise réputation du scripting Pourquoi se compliquer la vie avec du code alors qu’on a mis des années à obtenir des interfaces conviviales ? Je mets bien moins de temps à utiliser les outils disponibles plutôt que réfléchir à un script. Je n’ai jamais eu besoin de scripts jusqu’à aujourd’hui, pourquoi cela changerait-il ? 70 Les limites des interfaces graphiques Pour la petite gestion, comme la création d’un compte utilisateur, on ouvre l’outil, on clique sur l’élément, on change un attribut et hop ! Tout est fait. Que se passe-t-il quand on veut faire une modification massive sur les utilisateurs ? Renommer un grand nombre de partages ? Faire des modifications dans la base de registre sur la totalité des stations de travail de l’entreprise ? 71 Les cas courants où le scripting facilite la vie Automatiser des tâches répétitives. Accéder à des fonctionnalités du système qui ne sont pas directement accessibles via les interfaces graphiques. On rencontre aussi des cas où ces deux raisons se mêlent : automatiser des fonctionnalités cachées n’est pas un cas exceptionnel. 72 Les cas courants où le scripting facilite la vie Par exemple, on peut imaginer un script permettant de connaître le numéro de version du BIOS d’un parc de machines. Imaginez maintenant la même chose à effectuer manuellement pour 500, 1 000, voire 10 000 machines ! 73 La programmation en shell Le shell est un langage interprété ; Il est possible d’écrire et d’invoquer des scripts dans un certain shell tout en utilisant un autre shell en interactif. Les syntaxes du Bourne-shell, du Bash et du C-shell diffèrent. Si un script commence par la ligne #!/bin/xxx alors ce script est interprété par le shell /bin/xxx. Toujours commencer un shell script par la ligne #!/bin/bash. 74 Le premier script Shell Création avec l’éditeur gedit le fichier listf contenant la ligne ls -a. $ gedit listf $ chmod a+x listf $ sh listf $./listf 75 Le passage des paramètres Avec gedit, modifier le fichier listf de la façon suivante : echo "contenu du repertoire $1" ls -a $1 $./listf /boot $ sh listf /boot 76 Les variables spéciales En plus des variables 1, 2, …, 9, le shell prédéfinit des variables facilitant la programmation : 0 contient le nom sous lequel le script est invoqué, # contient le nombre de paramètres passés en argument, * contient la liste des paramètres passés en argument, ? contient le code de retour de la dernière commande exécutée, 77 Les variables spéciales Soit le script echopara qui contient les lignes : echo $0 a ete appele avec $# parametres echo qui sont : $* $./echopara a b c d 78 Les instructions de lecture et d’écriture Soit le script affiche qui contient les lignes : echo n ”Donner le nom du répertoire : ” read repr ls –a –l $repr $./affiche 79 Les instructions conditionnelles La sélection à une alternative : if… then… fi if commande then commandes fi Les commandes sont exécutées si la commande condition renvoie un code retour nul ( $? = 0 ). 80 Les instructions conditionnelles Soit le script echoif qui contient : if grep -i "toor" /etc/passwd then echo "L’utilisateur toor est connu du systeme" else echo "L’utilisateur toor est inconnu du systeme" fi $./echoif Exercice : Rendre ce script interactive en demandant le nom de l’utilisateur ? 81 Que fait ce script Shell echo "Ce script a pour nom: $0" if [ $# eq 0 ] then echo "Il a ete appele sans parametre." else if [ $# eq 1 ] then echo "Il a ete appele avec le parametre $1" else echo "Il a ete appele avec $# parametres, qui sont: $*" fi if [ $1 'ok' ] then echo "Bravo: le premier parametre vaut $1" else echo "Helas, le premier parametre ne vaut pas ok mais $1" fi fi echo "Au revoir $LOGNAME, le script $0 est fini." 82 Les itérations (1) for i in {1..5} do echo “Le contenu de i est : $i " done $./echofor 83 Les itérations (2) for i in un deux trois do echo $i done $./echofor 84 Les itérations (3) for i do echo $i done $./echofor le systeme Linux 85 Exercice 1 Ecrire un script Shell qui permet de : 1-déterminer l’adresse IP de votre poste 2- déterminer l’adresse IP Votre passerelle par default 3-Verifier la connectivité de votre poste avec internet 86 Exercice 2 Ecrire un script Shell qui permet de : 1- créer 10 répertoires nommés ainsi, dir1, dir2, …, dir10 dans un repertoire nommé dirs 2- créer 100 fichiers dans chaque répertoire, 3- effacer les répertoires en nombres paire. 4- effacer les fichiers en nombres impaire dans chaque réperoire. 87 Représentation des disques Suivant le type de contrôleur et d’interface sur lesquels les disques sont connectés, Linux donne des noms différents aux fichiers spéciaux des périphériques disques. Chaque disque est représenté par un fichier spécial de type bloc. Chaque partition aussi. Les disques reliés à des contrôleurs SCSI, SCA, SAS, FiberChannel, USB, Firewire se nomment sdX. 88 Représentation des disques sda : premier disque SCSI sdb : deuxième disque SCSI sdc : troisième disque SCSI etc…. La commande lsscsi permet d’énumérer les périphériques SCSI. 89 Les partitions Une partition est un découpage logique du disque. Il en existe trois sortes : Les partitions primaires, au nombre de quatre. Les partitions étendues, une seule par disque. Les partitions ou lecteurs logiques. 90 Manipuler les partitions Les outils fdisk, cfdisk, sfdisk permettent de manipuler les partitions. C’est l’outil fdisk, à la fois le plus ancien et le plus standard. fdisk est généralement utilisé par les administrateurs et les ingénieurs système. fdisk se lance en tant que root. 91 Manipuler les partitions Lister, Supprimer, Créer les partitions :

Use Quizgecko on...
Browser
Browser