TP3 Gestion de Processus
TP3 Gestion de Processus
TP3 Gestion de Processus
TP 3: Gestion de processus
Objectifs
L’objectif de ce TP est d’aborder les notions sur les processus. A la fin de ce TP l’étudiant
devrait :
- visualiser les processus de la machine
- basculer les processus d’une exécution en arrière plan et en premier plan
- dégager l’arborescence des processus
- déterminer l’état des différents processus
1
Atelier Système 1 2019-2020
Cette commande possède de nombreuses options. Les options les plus intéressantes sont :
-a : (all) affiche les processus de tous les utilisateurs
-x : affiche aussi les processus qui ne sont pas rattachés au terminal en cours
-u : (user) affiche le nom de l'utilisateur qui a lancé le processus et sa date de lancement. Cette
option peut prendre en argument une liste d'utilisateurs séparés par une virgule
-g : (group) même chose pour les groupes
-t : même chose pour les terminaux
-p : même chose pour les PID
-f : (full-format) affiche des informations techniques sur chaque processus
-l : (long format) affiche encore plus d'informations détaillées sur chaque processus
-H : (hierarchy) affiche les processus sous la forme d'une hiérarchie (parfois représentée par
des tabulations)
La commande ps -ef affiche les informations suivantes:
2
Atelier Système 1 2019-2020
Certains processus sont permanents (PPID=1), c'est à dire qu'ils sont lancés au démarrage du
système et arrêtés uniquement à l'arrêt du système. On appelle ces processus des démons.
La commande ps –Al permet une sortie assez riche.
On peut utiliser la syntaxe avec l’option -o pour ne présenter que les champs désirés :
Pour voir les processus d'un seul utilisateur, vous pouvez taper : ps -u root
La commande ps ax affiche une liste des processus système en cours d'exécution, y compris
les processus appartenant à d'autres utilisateurs. Pour afficher également le propriétaire de ces
processus, utilisez la commande ps aux. Cette liste est statique ; il s'agit d'une copie des
processus en cours d'exécution.
Pour obtenir une liste des processus en cours mise à jour constamment, utilisez la commande
top.
Vous pouvez utiliser la commande ps combinée à la commande grep pour savoir si une
commande est en cours d'exécution. Par exemple, pour déterminer si vi est encore en cours
d'utilisation, utilisez la commande : ps ax | grep vi
3
Atelier Système 1 2019-2020
Les principaux champs disponibles sont (le libellé de la colonne est entre parenthèses) :
4
Atelier Système 1 2019-2020
Le second caractère du champ STAT est positionné à W si le processus est déplacé en espace
de pagination. Enfin un N apparaît en troisième caractère si le processus présente une valeur
nice positive.
1.3.2 Commande pidof
Cette commande permet de retourner les PID d’un processus.
5
Atelier Système 1 2019-2020
6
Atelier Système 1 2019-2020
[1] : c'est le numéro du processus en arrière-plan dans cette console. Comme c'est le
premier processus que nous envoyons en arrière-plan, il prend le numéro 1.
16504 : c'est le numéro d'identification général du processus (le fameux PID dont on a
déjà parlé). Cette information vous permet de tuer le processus avec kill si nécessaire.
Il reste toutefois un problème : le processus est « attaché » à votre console. Si vous fermez
la console sur laquelle vous êtes, le processus sera tué et ne s'exécutera donc pas jusqu'au
bout.
7
Atelier Système 1 2019-2020
L'option &, bien qu'assez couramment utilisée, a ce défaut non négligeable : le processus reste
attaché à la console, ce qui veut dire que si la console est fermée ou que l'utilisateur se
déconnecte, le processus sera automatiquement arrêté.
Si on veut que le processus continue, il faut lancer la commande via nohup. Cela s'utilise
comme ceci : nohup commande
La sortie de la commande est par défaut redirigée vers un fichier nohup.out. Aucun message
ne risque donc d'apparaître dans la console. D'autre part, la commande est maintenant
immunisée contre la fermeture de la console. Elle continuera de fonctionner quoi qu'il arrive
(sauf si on lui envoie un kill, bien sûr).
8
Atelier Système 1 2019-2020
Exercice 1 :
1. Dans un système Linux, quel est le processus qui n'a pas de père. Quel est son PID ?
2. À quoi servent les options -f et -L de la commande ps ?
3. Lancez la commande ps ax -f -L et décrivez les différentes colonnes affichées.
4. Utilisez la commande pstree pour afficher l'arbre des processus en cours avec leur PID.
5. Quelle option de pstree permet d'afficher les ancêtres d'un certain processus dont le PID est
donné en argument à la commande ?
6. Quelle option de pstree permet d'afficher l'arbre complet des processus en cours (i.e.,
permet d'afficher
toutes les occurrences de chaque processus) ?
7. Quel signal est lancé par défaut à la commande kill ?
8. Que font les signaux suivants : SIGQUIT, SIGKILL, SIGCHLD ?
9. Quel caractère permet de lancer une commande en arrière-plan ? Quelle commande permet
de lancer une commande en arrière-plan ?
10. Affichez la liste des processus actifs dans votre terminal courant en utilisant ps.
11. Quelles informations sont affichées par défaut lorsque vous lancez la commande top?
9
Atelier Système 1 2019-2020
12. Utilisez la commande top pour afficher la liste des processus en temps réel en ajoutant les
colonnes PID et UID dans l'affichage.
13. a) Lancez 3 fois la commande sleep en arrière-plan avec des arguments différents à
chaque fois.
b) Affichez la liste des travaux en cours. Que signifient les caractères + et - dans le
résultat obtenu ?
c) Lancez ensuite la commande sleep en avant-plan.
d) Reprenez la main dans votre terminal et affichez à nouveau la liste des travaux en
cours.
e) Relancez en arrière-plan la dernière commande sleep, que vous avez suspendue
auparavant.
f) Arrêtez l'exécution de la première commande sleep en utilisant son PID.
g) Arrêtez l'exécution de la deuxième commande sleep en utilisant son numéro de travail.
h) Arrêtez l'exécution des deux dernières commandes sleep en utilisant la combinaison de
touches Ctrl+c.
14. Lancez la commande xclock depuis un terminal en avant-plan. Attendez que la fenêtre de
l'application s'ouvre puis fermez le terminal d'où vous l'avez lancée. Que se passe-t-il ?
15. Lancez la commande xclock depuis un terminal en arrière-plan. Attendez que la fenêtre de
l'application s'ouvre puis fermez le terminal d'où vous l'avez lancée. Que se passe-t-il ?
16. À quoi sert la commande nohup ? Comment faire pour à la fois détacher un processus du
shell à partir duquel il est lancé et le lancer en arrière-plan ? Donnez un exemple.
17.Expliquer le schéma suivant
10
Atelier Système 1 2019-2020
Exercice 2 :
3. Dans le terminal tty2, utiliser la commande (tail -f) pour afficher en temps réel le
contenu du fichier /tmp/log
4. Dans le tty1, interrompre le processus en cours d’exécution en utilisant Ctrl+Z.
5. Quel est le numéro de travail associé au processus interrompu ?
6. Vérifier dans tty2 que le remplissage du fichier log est arrêté.
7. Dans le tty1, lancer à nouveau le processus arrêté mais en arrière plan.
8. Vérifier que le travail déjà arrêté est en cours d’exécution. Vérifier dans tty2, l’état de
fichier /tmp/log
9. Dans tty1 et lancer les deux commandes suivantes :
11
Atelier Système 1 2019-2020
etudiant@polytech$ ^B ^C
10. Dans tty2, vérifier que les trois processus sont en cours d’exécution et consulter le
fichier /tmp/log
11. Dans tty1, utiliser ensuite kill pour envoyer un SIGSTOP au numéro de travail du
premier processus exécuté pour le suspendre. Vérifier avec la commande jobs
12. Relancer le travail du premier processus à l’aide de kill et le signal SIGCONT.
13. Utiliser SIGTERM pour terminer les travaux [2] et [3]. Vérifier avec jobs qu’ils sont
terminés.
14. Vérifier si tous les processus ont été terminés, sinon terminer ceux qui restent.
12