Linux-Mandrake:
Guide de l'utilisateur
et Manuel de référence

MandrakeSoft

 
 
Janvier 2000
http://www.linux-mandrake.com


Suivant : Où obtenir de la documentation
Précédent : Lothar
Retour

(Retour à la table des matières)

Chapitre 7 : Contrôle des processus


Un peu plus sur les processus

Nous avons mentionné dans une section précédente qu'il était possible d'avoir le contrôle des processus, et c'est ce que ce chapitre va vous apprendre à faire. Il est utile, pour bien comprendre les actions que nous allons effectuer ici, d'en savoir un peu plus.

L'arborescence des processus

De même que pour les fichiers, tous les processus en cours d'exécution sur un système Linux sont organisés sous forme d'arborescence, et chaque processus possède un numéro (son PID, Process ID, « identifiant du processus »), ainsi que le numéro de son processus parent (PPID, Parent Process ID, « identifiant du processus parent »).

Il existe par conséquent un processus au sommet de l'arborescence, l'équivalent de la racine pour les systèmes de fichiers: init (voir le Manuel de référence), qui possède toujours le numéro 1. La section suivante détaillera deux commandes, ps et pstree, qui permettent d'obtenir des informations sur les processus en cours d'exécution.

Les signaux

Chaque processus sous Unix est susceptible de réagir à des signaux qui lui sont envoyés. Il existe 31 signaux différents. Pour chacun de ces signaux, le processus peut redéfinir le comportement par défaut, sauf deux: le signal numéro 9 (KILL), et le signal numéro 19 (STOP).

Le signal 9 tue un processus de façon irrémédiable, sans lui laisser le temps de se terminer correctement. C'est ce signal qu'il faut envoyer à des processus dont vous ne pouvez plus rien faire. Une liste complète des signaux est disponible en utilisant la commande kill -l.

Obtenir des informations sur les processus: ps et pstree

Ces deux commandes affichent une liste des processus existants sur le système selon les critères que vous voulez.

ps

Lancer cette commande sans argument montrera uniquement les processus dont vous êtes l'initiateur et qui sont rattachés au terminal que vous utilisez:

$ ps
  PID TTY          TIME CMD
 5162 ttya1    00:00:00 zsh
 7452 ttya1    00:00:00 ps

Les options sont nombreuses, citons les plus courantes:

Il existe beaucoup d'autres options, vous vous reporterez à la page de manuel pour plus d'informations (man ps).

La sortie de cette commande est divisée en champs: celui qui vous intéressera le plus est le champ PID, qui contient l'identificateur du processus. Le champ CMD contient quant à lui le nom de la commande exécutée.

Une façon très courante d'invoquer ps est la suivante:

$ ps ax | less

Vous obtenez ainsi une liste de tous les processus en cours d'exécution, et pouvez ainsi repérer un ou plusieurs processus qui vous pose(nt) problème pour pouvoir ensuite le(s) tuer.

pstree

La commande pstree affiche les processus sous forme d'arborescence. Un avantage est que vous pouvez tout de suite voir qui est le processus parent d'un autre: quand vous voulez tuer toute une série de processus, s'ils sont tous pères et fils, il vous suffit de tuer l'ancêtre commun. Vous aurez avantage à utiliser l'option -p, qui affiche le PID de chaque processus, ainsi que l'option -u qui affiche le nom de l'utilisateur ayant lancé le processus. L'arborescence étant généralement longue, il est plus facile d'invoquer pstree de cette façon:

$ pstree -up | less

Vous avez ainsi une vue de toute l'arborescence des processus.

Envoyer des signaux aux processus: kill, killall et top

Astuce sous X: xkill

Si vous utilisez KDE, vous avez un raccourci pour tuer un processus X bloqué. En effet, vous disposez d'une icône bien reconnaissable sur le bureau, reproduite dans la figure 9.1.

Icône de xkill
Figure 9.1 Icône de xkill

Cette icône lance la commande xkill que vous pouvez lancer depuis un terminal. Quand vous cliquez sur cette icône (ou lancez le programme de votre terminal), le curseur de la souris se transformera. Vous devrez alors sélectionner avec un clic gauche la fenêtre correspondant au processus que vous voulez tuer.

kill, killall

Ces deux commandes permettent d'envoyer des signaux à des processus. La commande kill attend un numéro de processus en argument, tandis que killall attend un nom de commande.

Les deux commandes peuvent optionnellement recevoir un numéro de signal en argument. Par défaut, elles envoient toutes deux le signal 15 (TERM) à ou aux processus désigné(s). Par exemple, si vous voulez tuer le processus de PID 785, vous entrerez la commande:

$ kill 785

Si vous voulez lui envoyer le signal 9, vous entrerez alors:

$ kill -9 785

Supposons que vous vouliez tuer un processus pour lequel vous connaissez le nom de la commande. Au lieu de repérer le numéro du processus à l'aide de ps, vous pouvez tuer le processus directement:

$ killall -9 netscape

Quoi qu'il arrive, vous ne tuerez que vos propres processus (sauf si vous êtes root), donc ne vous inquiétez pas des processus « du voisin » portant le même nom, ils ne seront pas affectés.

top

top est un programme tout en un: il remplit à la fois les fonctions de ps et kill. C'est un programme en mode console, vous le lancerez donc depuis un terminal, comme exposé dans la figure 9.2.

Exemple d'exécution de top
Figure 9.2 Exemple d'exécution de top

Le programme se contrôle entièrement au clavier. Une aide est disponible en tapant sur 'h', mais elle est en anglais. Voici donc quelques unes des commandes que vous pouvez utiliser:


Suivant : Où obtenir de la documentation
Précédent : Lothar
Retour

Copyright © 2000 MandrakeSoft