Shell Linux 2 - WordPress.com

Transcription

Shell Linux 2 - WordPress.com
Lycée polyvalent DIDEROT
61, rue David d’Angers
75019 PARIS
Département IRIS
http://www.diderot.org
TP
Shell Linux 2
Apprentissage des commandes de base du shell Linux
Auteur
G.VALET
Version - Date
Version 2.2 - Sept. 2009
Nom du fichier
TP2-Shell Linux-v2
TP
Shell Linux 2
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
TP
Shell Linux 2
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
TP
Shell Linux 2
Comme la liste est très longue, trouvez comment filtrer le résultat en
relation avec l’application « gnome »
n’affichant que les processus en
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
TP
Shell Linux 2
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.
jean
claire
usr
tp2-iris
paul
ahmed
...
Voici le cahier des charges :
 Le fichier « /etc/passwd » contient la liste de tous les utilisateurs du système. Le 1er 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
TP
Shell Linux 2
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
[email protected]
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