Lycée polyvalent DIDEROT 61, rue David d Angers 75019 PARIS http://www.diderot.org Département IRIS TP Shell Linux 2 Apprentissage des commandes de base du shell Linux Auteur Version - Date Nom du fichier G.VALET Version 2.2 - Sept. 2009 TP2-Shell Linux-v2
Sommaire A. OBJECTIFS... 3 B. ENVIRONNEMENT... 3 C. ENONCE DU TP... 3 C.1. Manipulation du Shell... 3 a. Quel processus s exécute?... 3 b. Tuer un processus... 4 C.2. Script de création automatique de répertoire... 5 a. Extraire tous les login du système... 5 b. Création automatique des répertoires... 6 C.3. Changement des permissions... 6 C.4. Création automatique de fichiers texte... 6 Shell Linux 2 - G.VALET Reproduction interdite 2 / 6
A. Objectifs Se familiariser avec les commandes de base de Linux et être capable d'effectuer des opérations de base : Créer, modifier, supprimer des fichiers, changer les droits, créer des scripts. B. Environnement Vous disposerez du système d'exploitation Linux en ligne de commande exclusivement. Le shell utilisé sera le shell bash (Bourne Again Shell). Un «Shell» est un interpréteur de commandes du système UNIX/LINUX. Les commandes exécutées par un Shell peuvent provenir soit du terminal, soit d'un fichier appelé fichier de commandes. C. Enoncé du TP C.1. Manipulation du Shell a. Quel processus s exécute? Il est temps d apprendre quelques astuces très utiles lorsqu on travaille avec Linux. Dans un système d exploitation multitâche, plusieurs processus peuvent s exécuter simultanément. La liste est processus est accessible grâce à la commande «ps» # ps ax PID TTY STAT TIME COMMAND 2230 tty4 Ss+ 0:00 /sbin/getty 38400 tty4 2231 tty5 Ss+ 0:00 /sbin/getty 38400 tty5 2237 tty2 Ss+ 0:00 /sbin/getty 38400 tty2 2239 tty3 Ss+ 0:00 /sbin/getty 38400 tty3 2240 tty6 Ss+ 0:00 /sbin/getty 38400 tty6 2310? Ss 0:00 /usr/sbin/acpid -c /etc/acpi/events -s /var/run/acpid.socket 2355? Ss 0:00 /sbin/syslogd -u syslog 2378? S 0:01 /bin/dd bs 1 if /proc/kmsg of /var/run/klogd/kmsg 2380? Ss 0:00 /sbin/klogd -P /var/run/klogd/kmsg 2403? Ss 0:00 /bin/dbus-daemon --system 2698? Ssl 0:00 /usr/sbin/console-kit-daemon 2853? Ss 0:00 /usr/sbin/bluetoothd 2886? Ss 0:00 /usr/sbin/gdm 2887? S 0:00 /usr/sbin/gdm 2919? Ssl 0:00 /usr/sbin/networkmanager --pid-file /var/run/networkmanager/networkmanager.pid 2924? S 0:00 /sbin/wpa_supplicant -u -f /var/log/wpa_supplicant.log 2928? S 0:00 /usr/sbin/nm-system-settings --config /etc/networkmanager/nm-systemsettings.conf 2943? Ss 0:00 avahi-daemon: running [ubuntu.local] 2944? Ss 0:00 avahi-daemon: chroot helper On remarque que chaque processus a un numéro (PID) et un statut (STAT). Le nom de la commande exécutée pour démarrer le processus est à la dernière colonne. Shell Linux 2 - G.VALET Reproduction interdite 3 / 6
Comme la liste est très longue, trouvez comment filtrer le résultat en n affichant que les processus en relation avec l application «gnome» Commande trouvée : b. Tuer un processus Lorsqu un logiciel ne fonctionne plus, il faut pouvoir terminer son exécution. Pour cela, la commande «kill» est très efficace. Il s agit d envoyer un signal plus ou moins autoritaire (Différents Types de signaux). Il y a certains signaux que le processus ne peut refuser d accepter (Même s il ne répond plus). Les types de signaux les plus utiles sont : HUP (1, le plus gentil), KILL (9, le plus méchant) La syntaxe de la commande «kill» est la suivante : # kill -signal pid Avec : signal : le type de signal à envoyer pid : le numéro du processus à «tuer» Démarrez le programme de traitement de texte (Open Office Writer) et commencez à saisir du texte sans enregistrer le fichier. Dans le terminal, repérez le numéro de processus (PID) grâce à la commande «ps» (En combinaison avec grep). PID trouvé : Ensuite, envoyez un signal HUP avec la commande «kill» et observez le résultat dans la liste des processus. Recommencez en envoyant un signal «KILL(9)». Que se passe-t-il maintenant? Commandes utilisées : Réponse : Shell Linux 2 - G.VALET Reproduction interdite 4 / 6
C.2. Script de création automatique de répertoire L objectif est d écrire un script capable de créer automatiquement autant de sous-répertoires qu il y a d utilisateurs enregistrés dans le système. Afin d éviter la création manuelle des répertoires, on préfère rédiger un script automatique. usr tp2-iris jean claire paul ahmed... Voici le cahier des charges : Le fichier «/etc/passwd» contient la liste de tous les utilisateurs du système. Le 1 er champ de ce fichier sera exploité pour la création automatique Le nom du répertoire à créer correspond au login de l utilisateur. Il devra être crée dans «/usr/tp2-iris/» Le script devra créer les répertoires sans provoquer de message d erreur (Vérifier si le répertoire n existe pas déjà. Si le répertoire «/usr/tp2-iris» n existe pas, le script devra le créer. Le nom du script sera «makedir.sh» et devra être exécutable a. Extraire tous les login du système La 1 ère étape consiste à trouver la commande permettant d extraire du fichier «/etc/passwd» la liste de tous les logins des utilisateurs du système. Informations utiles : La commande «cut» permet d extraire une partie de chaque ligne d un fichier. Chaque partie d une ligne est un champ (Field). Il faut choisir les champs que l on veut conserver ainsi que le séparateur de champs qui, dans notre cas, sera le caractère «:» Syntaxe de la commande «cut» cut -d separateur -f champ1,champ2,... Trouvez la commande permettant d extraire uniquement les logins du fichier «/etc/passwd». Vérifier que cette commande renvoie bien le résultat attendu Commande trouvée : Shell Linux 2 - G.VALET Reproduction interdite 5 / 6
b. Création automatique des répertoires Avant de créer un répertoire, il faut s assurer que celui-ci n existe pas déjà. Une instruction conditionnelle devra par conséquent être ajoutée. Informations utiles : La commande «mkdir» permet de créer un répertoire Une boucle «for» permet de réaliser une itération sur chaque login extrait du fichier /etc/passwd Réalisez le fichier de script et testez le bon fonctionnement. N hésitez pas à le ré exécuter plusieurs fois pour vérifier qu il ne produit aucun message d erreur. C.3. Changement des permissions Le script précédent peut-être complété afin que chaque répertoire crée, appartienne à l utilisateur correspondant et au groupe utilisateur. Les droits sur ce répertoire seront : drwxrwxr-- 1 paul paul 1024 2007-09-12 14:39 paul Informations utiles : La commande «chown» permet de changer le propriétaire d un répertoire ou d un fichier La commande «chmod» permet de modifier les droits de chaque répertoire Complétez le script précédent afin qu il effectue le travail demandé. Vérifiez soigneusement que le travail a été fait correctement quelque soit le cas de figure. C.4. Création automatique de fichiers texte Maintenant que les répertoires sont crées, il faut, dans chacun d entre eux, créer un fichier nommé «readme.txt» qui contiendra le message de bienvenue suivant : Bonjour user, vous êtes dans votre répertoire partagé. Pour tout pb, veuillez contacter admin@domaine.com Infos utiles : La commande «echo» associée à l opérateur de redirection > ou >> permet d insérer du texte dans un fichier Complétez le script précédent afin qu il crée automatiquement le fichier «readme.txt» dans le répertoire de chaque utilisateur. Vérifiez les messages d erreurs qui sortent à l écran avant de conclure sur le bon fonctionnement du script Shell Linux 2 - G.VALET Reproduction interdite 6 / 6