Show 009.html syntax highlighted
<HTML><HEAD><TITLE>Linux-Mandrake: Guide de l'utilisateur et Manuel de référence</TITLE>
<LINK REV=MADE HREF="mailto:info@mandrakesoft.com"></HEAD>
<BODY BGCOLOR="#ffffff"><center><font size="+5"><STRONG><table border="0"><tr><td><STRONG>Linux-Mandrake</STRONG>:</td></tr><tr><td>Guide de l'utilisateur</td></tr><tr><td>et Manuel de référence</td></tr></table></STRONG></font>
<p><font size="+2"><STRONG><table border="0"><tr><td><STRONG>MandrakeSoft</STRONG></td></tr></table></STRONG></font>
<p><STRONG><table border="0"><tr><td> </td></tr><tr><td> </td></tr><tr><td>Janvier 2000</td></tr><tr><td><CODE>http://www.linux-mandrake.com</CODE></td></tr><tr><td></td></tr></table></STRONG></center>
<hr><a href="010.html">Suivant : Où obtenir de la documentation</a><br><a href="008.html">Précédent : <STRONG>Lothar</STRONG></a><br><a href="../">Retour</a><br><hr><a href="000.html#toc"><font size="-1">(Retour à la table des matières)</font></a>
<H1><font size="+1"><a name="68">Chapitre 7 : Contrôle des processus</a></font></H1><hr><H1><a name="69">Un peu plus sur les processus</a></H1>
<p>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.
<H2><a name="70">L'arborescence des processus</a></H2>
<p>De même que pour les fichiers, tous les processus en cours d'exécution
sur un système <STRONG>Linux</STRONG> sont organisés sous forme d'arborescence,
et chaque processus possède un numéro (son <EM>PID</EM>,
<EM>Process ID</EM>, « identifiant du
processus »), ainsi que le numéro de son processus parent (<EM>PPID</EM>,
<EM>Parent Process ID</EM>, « identifiant du
processus parent »).
<p>Il existe par conséquent un processus au sommet de l'arborescence,
l'équivalent de la racine pour les systèmes de fichiers: <CODE>init</CODE>
(voir le <EM>Manuel de référence</EM>), qui possède toujours le numéro 1. La
section suivante détaillera deux commandes, <CODE>ps</CODE> et
<CODE>pstree</CODE>, qui permettent d'obtenir des informations sur les
processus en cours d'exécution.
<H2><a name="71">Les signaux</a></H2>
<p>Chaque processus sous <STRONG>Unix</STRONG> 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 (<CODE>KILL</CODE>), et le signal numéro
19 (<CODE>STOP</CODE>).
<p>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 <CODE>kill -l</CODE>.
<H1><a name="72">Obtenir des informations sur les processus: <CODE>ps</CODE> et <CODE>pstree</CODE></a></H1>
<p>Ces deux commandes affichent une liste des processus existants sur le
système selon les critères que vous voulez.
<H2><a name="73"><CODE>ps</CODE></a></H2>
<p>Lancer cette commande sans argument montrera uniquement les processus
dont vous êtes l'initiateur et qui sont rattachés au terminal que vous
utilisez:
<p><font size="+2"><PRE>
$ ps
PID TTY TIME CMD
5162 ttya1 00:00:00 zsh
7452 ttya1 00:00:00 ps
</PRE></font>
<p>Les options sont nombreuses, citons les plus courantes:
<ul><li><CODE>a</CODE>: affiche aussi les processus lancés par les autres
utilisateurs;
<li><CODE>x</CODE>: affiche aussi les processus n'ayant pas de terminal de
contrôle (c'est le cas de pratiquement tous les serveurs);
<li><CODE>u</CODE>: affiche pour chaque processus le nom de l'utilisateur qui
l'a lancé et l'heure de son lancement.</ul>
<p>Il existe beaucoup d'autres options, vous vous reporterez à la page de
manuel pour plus d'informations (<CODE>man ps</CODE>).
<p>La sortie de cette commande est divisée en champs: celui qui vous
intéressera le plus est le champ <CODE>PID</CODE>, qui contient
l'identificateur du processus. Le champ <CODE>CMD</CODE> contient quant à lui
le nom de la commande exécutée.
<p>Une façon très courante d'invoquer <CODE>ps</CODE> est la suivante:
<p><font size="+2"><PRE>
$ ps ax | less
</PRE></font>
<p>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.
<H2><a name="74"><CODE>pstree</CODE></a></H2>
<p>La commande <CODE>pstree</CODE> 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
<CODE>-p</CODE>, qui affiche le <EM>PID</EM> de chaque processus, ainsi que
l'option <CODE>-u</CODE> qui affiche le nom de l'utilisateur ayant lancé le
processus. L'arborescence étant généralement longue, il est plus facile
d'invoquer <CODE>pstree</CODE> de cette façon:
<p><font size="+2"><PRE>
$ pstree -up | less
</PRE></font>
<p>Vous avez ainsi une vue de toute l'arborescence des processus.
<H1><a name="75">Envoyer des signaux aux processus: <CODE>kill</CODE>, <CODE>killall</CODE> et <CODE>top</CODE></a></H1>
<H2><a name="76">Astuce sous <STRONG>X</STRONG>: <CODE>xkill</CODE></a></H2>
<p>Si vous utilisez <STRONG>KDE</STRONG>, vous avez un raccourci pour tuer un
processus <STRONG>X</STRONG> bloqué. En effet, vous disposez d'une icône bien
reconnaissable sur le bureau, reproduite dans la figure 9.1.
<p><center><img src="images/xkill.gif" alt="Icône de xkill" width="35" height="35"></center>
<center>Figure 9.1 Icône de <CODE>xkill</CODE></center>
<p>Cette icône lance la commande <CODE>xkill</CODE> 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.
<H2><a name="77"><CODE>kill</CODE>, <CODE>killall</CODE></a></H2>
<p>Ces deux commandes permettent d'envoyer des signaux à des processus. La
commande <CODE>kill</CODE> attend un numéro de processus en argument,
tandis que <CODE>killall</CODE> attend un nom de commande.
<p>Les deux commandes peuvent optionnellement recevoir un numéro de signal
en argument. Par défaut, elles envoient toutes deux le signal 15
(<CODE>TERM</CODE>) à ou aux processus désigné(s). Par exemple, si vous voulez
tuer le processus de <EM>PID</EM> 785, vous entrerez la commande:
<p><font size="+2"><PRE>
$ kill 785
</PRE></font>
<p>Si vous voulez lui envoyer le signal 9, vous entrerez alors:
<p><font size="+2"><PRE>
$ kill -9 785
</PRE></font>
<p>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 <CODE>ps</CODE>, vous pouvez tuer le processus directement:
<p><font size="+2"><PRE>
$ killall -9 netscape
</PRE></font>
<p>Quoi qu'il arrive, vous ne tuerez que vos propres processus (sauf si
vous êtes <CODE>root</CODE>), donc ne vous inquiétez pas des processus
« du voisin » portant le même nom, ils ne seront pas affectés.
<H2><a name="78"><CODE>top</CODE></a></H2>
<p><CODE>top</CODE> est un programme tout en un: il remplit à la fois les
fonctions de <CODE>ps</CODE> et <CODE>kill</CODE>. C'est un programme en
mode console, vous le lancerez donc depuis un terminal, comme exposé
dans la figure 9.2.
<p><center><img src="images/top.gif" alt="Exemple d'exécution de top" width="499" height="316"></center>
<center>Figure 9.2 Exemple d'exécution de <CODE>top</CODE></center>
<p>Le programme se contrôle entièrement au clavier. Une aide est disponible
en tapant sur <CODE>'h'</CODE>, mais elle est en anglais. Voici donc quelques
unes des commandes que vous pouvez utiliser:
<ul><li><CODE>'k'</CODE>: cette commande sert à envoyer un signal à un processus.
<CODE>top</CODE> vous demandera alors le <EM>PID</EM> du processus suivi du
numéro du signal à envoyer (15 par défaut);
<li><CODE>'M'</CODE>: cette commande sert à trier les processus selon la place
mémoire qu'ils occupent (champ <CODE>%MEM</CODE>);
<li><CODE>'P'</CODE>: cette commande sert à trier les processus selon le temps
<EM>CPU</EM> qu'ils consomment (champ <CODE>%CPU</CODE>; c'est le tri par
défaut);
<li><CODE>'u'</CODE>: cette commande sert à afficher les processus d'un
utilisateur donné, <CODE>top</CODE> vous demandera lequel. Vous devez
entrer le <EM>nom</EM> de l'utilisateur, pas son <EM>UID</EM>. Si vous
n'entrez aucun nom, tous les processus seront affichés;
<li><CODE>'i'</CODE>: cette commande fonctionne en tant que bascule; par
défaut, tous les processus, même endormis, sont affichés; cette commande
fera que seuls les processus en cours d'exécution seront affichés
(processus dont le champ <CODE>STAT</CODE> indique <CODE>R</CODE>, <EM>running</EM>)
et pas les autres. Un nouvel appel à cette commande reviendra à l'état
antérieur.</ul>
<hr><a href="010.html">Suivant : Où obtenir de la documentation</a><br><a href="008.html">Précédent : <STRONG>Lothar</STRONG></a><br><a href="../">Retour</a><br><hr>Copyright © 2000 <a href="http://www.mandrakesoft.com/">MandrakeSoft</a></BODY></HTML>
See more files for this project here