Code Search for Developers
 
 
  

009.html from Gulus at Krugle


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>&nbsp;</td></tr><tr><td>&nbsp;</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&nbsp;: Où obtenir de la documentation</a><br><a href="008.html">Précédent&nbsp;: <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&nbsp;: 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>, «&nbsp;identifiant du
processus&nbsp;»), ainsi que le numéro de son processus parent (<EM>PPID</EM>,
<EM>Parent Process ID</EM>, «&nbsp;identifiant du
processus parent&nbsp;»).

<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&nbsp;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
«&nbsp;du voisin&nbsp;» 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&nbsp;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&nbsp;: Où obtenir de la documentation</a><br><a href="008.html">Précédent&nbsp;: <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

Gulus

Groupe d\'Utilisateurs de Linux de l\'Universit? de Sherbrooke. http://www.gulus.org/

Project homepage: http://sourceforge.net/projects/gulus
Programming language(s): PHP,Shell Script
License: other

  images/
    LMDK520x200.gif
    aftermount.gif
    beforemount.gif
    console2.gif
    emacs_1.gif
    emacs_2.gif
    emacs_3.gif
    kde_app_add.gif
    kde_app_app.gif
    kde_app_exec.gif
    kde_apps_list.gif
    kde_controlcenter.gif
    kde_desk.gif
    kde_desk_conf1.gif
    kde_disknav.gif
    kde_menu_K.gif
    kde_mime_edit.gif
    kde_mime_edit2.gif
    kde_mime_jpeg.gif
    kde_mimetypelist.gif
    kde_openwith.gif
    kde_openwith_sample.gif
    kde_pager.gif
    kde_screensavercfg.gif
    kde_stylecfg.gif
    kdm2.gif
    kfm_ftp.gif
    kfm_icon_home.gif
    kfm_menu_display.gif
    kfm_navig_conf.gif
    kfm_sample_window.gif
    kfm_url_http.gif
    kfm_web.gif
    konsole.gif
    kpackage_all.gif
    kpackage_info.gif
    kppp_compte.gif
    kppp_main.gif
    kppp_start.gif
    lothar.gif
    lothar_ethercfg.gif
    lothar_sndcfg.gif
    netconf_ppp.gif
    passwd_err.gif
    reseau.gif
    samba_swat.gif
    samba_swat_auth.gif
    tinst_authconf.gif
    tinst_bootdsk.gif
    tinst_fmt_ext2.gif
    tinst_fmt_swap.gif
    tinst_hd_dummy.gif
    tinst_hd_mnt.gif
    tinst_hd_slash.gif
    tinst_insclass.gif
    tinst_intro.gif
    tinst_iou.gif
    tinst_keyb.gif
    tinst_lang.gif
    tinst_lilo.gif
    tinst_lilo_options.gif
    tinst_media.gif
    tinst_mouse_detect.gif
    tinst_mouse_type.gif
    tinst_net_ipdns.gif
    tinst_net_ipstatic.gif
    tinst_net_iptype.gif
    tinst_pack_indiv.gif
    tinst_packs.gif
    tinst_pre.gif
    tinst_printer.gif
    tinst_rootpass.gif
    tinst_scsi.gif
    tinst_scsi_pilot.gif
    tinst_services.gif
    tinst_timezone.gif
    tinst_useradd.gif
    tinst_x_monitor.gif
    top.gif
    user_add.gif
    userconf.gif
    vi_1.gif
    vi_2.gif
    vi_3.gif
    xkill.gif
  000.html
  001.html
  002.html
  003.html
  004.html
  005.html
  006.html
  007.html
  008.html
  009.html
  010.html
  011.html
  012.html
  013.html
  014.html
  015.html
  016.html
  017.html
  018.html
  019.html
  020.html
  021.html
  022.html
  023.html
  024.html
  025.html
  026.html
  index.html