2 Gestion de processus

Download Report

Transcript 2 Gestion de processus

Département R & T
[email protected]
Module M1105 - Introduction aux systèmes informatiques
TP 5 : Gestion de processus & Variables d’environnement
9 octobre 2014
2
Gestion de processus
1. Exécuter l’application gedit. Pouvez vous exécuter une autre commande dans le même
shell ? Justifier votre réponse.
L’interpréteur de commande est bloqué en attente de la terminaison du processus fils qui exécute gedit
2. Suspendre l’application gedit en appuyant sur les touches <ctrl>+Z. Peut-on exécuter une
autre commande dans le même shell ? Justifier.
<ctrl>+z
Le processus fils est suspendu. Le processus père peut alors continuer son exécution pour exécuter d’autres
commandes.
3. Reprendre l’exécution de l’application suspendue en premier plan.
fg %n où n est le numéro de la tâche (qui est different du PID)
4. Suspendre à nouveau l’application puis reprendre son exécution en tâche de fond. Peut-on
exécuter une autre commande dans le même shell ? Justifier.
<ctrl>+z puis bg %n où n est le numéro de la tâche
Le processus fils est lancé en parallèle avec le père, donc le père peut exécuter d’autres commandes.
5. Donner une commande qui permet d’arrêter l’application graphique exécutée.
kill PID
où PID est l’identifiant du processus.
6. Exécuter l’application geany comme tâche de fond. Fermer la fenêtre de l’interpréteur de
commandes à partir de laquelle l’application est lancée. Quel est l’effet de cette action sur
l’application geany ? Justifier votre réponse.
geany &
Lorsque l’on arrête l’interpréteur (le père) tous ses processus fils s’arrêtent aussi.
7. Dans un nouveau terminal, exécuter la commande nohup geany ; quel est le processus père
de geany ? Ensuite, arrêter le processus du shell. Quel est l’effet sur l’application geany ?
Quel est le (nouveau) processus père de l’application geany ?
Le processus fils survit à l’arrêt de son père. Le nouveau père devient le processus init (1), ce que l’on a
grâce à ps -ef.
Réseaux — Partie 1
21
IUT R&T Villetaneuse
Département R & T
[email protected]
8. Afficher en temps réel les informations sur l’ensemble de processus exécutés sur votre machine.
top
9. En utilisant la commande ps, afficher les informations détaillées sur tous vos processus.
ps -ef | grep votre_login
10. Lancer à nouveau l’application gedit en tâche de fond. Donner une commande qui renvoie
uniquement le PPID du processus qui exécute cette application.
3
ps -ef | grep gedit | tr ’ ’ ’\n’ | head -5 | tail -1 (pas bon si l’on est dans un autre terminal
que celui qui a lancé gedit !)
ps -ef | grep gedit | grep -v grep | cut -d’ ’ -f5 (bien)
ps -eo ppid,args | grep gedit | grep -v grep | cut -d’ ’ -f2 (par un étudiant)
Les signaux
1. Donner une commande pour afficher les signaux définis dans le système.
trap -l ou kill -l
2. Lancer à nouveau l’application gedit en tâche de fond. A l’aide de la commande kill
envoyer les signaux adéquats pour suspendre, reprendre puis arrêter le processus gedit.
IL faut d’abord trouver le PID du processus (en utilisant ps), puis utiliser la commande
kill -20 PID ou kill SIGSTOP PID
pour suspendre, kill -18 (ou SIGCONT) pour reprendre et kill -9 pour tuer le processus
3. Dans le shell courant et à l’aide de la commande trap remplacer le traitement par défaut
du signal d’interruption SIGINT par une commande qui affiche le message Signal SIGINT
désactivé. Tester.
trap ’echo signal SIGINT désactivé’ 2
pour tester taper <ctrl>+C dans le shell
4. Rétablir le traitement par défaut du signal SIGINT.
trap 2
4
Variables d’environnement
1. Afficher l’ensemble des variables d’environnements définies dans votre shell avec leurs valeurs associées.
env
2. Donner une commande qui renvoie la liste des noms des variables d’environnement sans
les valeurs associées. La liste doit être triée par ordre alphabétique.
env | cut -d= -f1 | sort
Réseaux — Partie 1
22
IUT R&T Villetaneuse
Département R & T
[email protected]
3. Afficher la valeur associée à la variable PATH. Quel est le rôle de cette variable ?
echo $PATH
Cette variable donne la liste des répertoires dans lesquels le système cherche à localiser des exécutables.
Le symbole " :" est utilisé comme séparateur.
4. Donner une commande qui renvoie le nombre de répertoires déclarés dans la variable PATH.
echo $PATH | tr : ’\n’ | wc -l
5. À l’aide de la commande which, localiser le compilateur gcc.
which gcc
6. A l’aide de la commande which, essayer de localiser la commande ifconfig. Justifier le
résultat obtenu.
which ifconfig ne retourne rien. En effet, cette commande est une commande de configuration de l’interface réseau et est souvent répertoriée dans le répertoire /sbin qui n’est pas par défaut dans la variable
PATH de l’utilisateur.
7. A l’aide de la commande alias, renommer la commande ls pour que le résultat de son
appel soit équivalent à la commande ls -l.
alias ls=’ls -l’
5
Affichage et interprétation de variables
Dans un shell, exécuter la commande X="ls -l". Ensuite exécuter les commandes suivantes
et, pour chacune, justifier le résultat obtenu :
1. echo X
X
2. echo $X
ls -l
3. echo ’$X’
$X
4. echo "$X"
ls -l
Réseaux — Partie 1
23
IUT R&T Villetaneuse
Département R & T
[email protected]
5. echo `$X`
Affiche la liste des fichiers dans le répertoire courant
6
Portée des variables
Dans un shell bash taper les commandes suivantes et justifier les affichages obtenus :
>X1=3
>Y1=10
>Z1=4
>export Y1
>env | grep X1=
>echo $X1
>echo $x1
>env | grep Y1=
>unset Y1
>export X1
>bash
>env | grep X1=
>echo $Z1
>exit
>echo $Z1
X1 est la même variables dans les deux shells. Par contre la variable Z1 est inconnue dans le deuxième shell
puisque cette variable n’a pas été exportée.
Réseaux — Partie 1
24
IUT R&T Villetaneuse