2. Manipulation des processus

Du point de vue du système, les applications s'exécutent en un ou plusieurs processus, consommant des ressources systèmes, telles que la mémoire ou du temps processeur. Nous présentons quelques commandes pour superviser et gérer les processus, et par conséquent les applications auxquels ils appartiennent.

2.1. S'informer sur les processus

La commande ps affiche une liste des processus existants sur le système, selon les critères que vous voulez.

Si la commande ps est lancée sans argument, seuls les processus dont vous êtes l'initiateur et qui sont rattachés au terminal que vous utilisez seront affichés :

$ ps
      PID TTY          TIME CMD
    18614 pts/3    00:00:00 bash
    20173 pts/3    00:00:00 ps

Voici ses options les plus communes :

  • a : affiche les processus lancés par tous les utilisateurs ;

  • x: affiche les processus lancés depuis n'importe quel terminal, et pas seulement le vôtre (ou même ceux n'ayant pas de terminal du tout);

  • u : affiche pour chaque processus le nom de l'utilisateur qui l'a lancé et l'heure de son lancement.

2.2. Contrôler les processus

Les processus sont contrôlés par des signaux. Les commandes kill et killall sont utilisées pour envoyer des signaux aux processus. La commande kill attend un numéro de processus en argument, tandis que la commande killall attend un nom de processus.

[Note] Note

Gardez à l'esprit que les processus réagissent différemment aux mêmes signaux. Quand vous envoyez un signal à un processus, vous ne pouvez donc pas vous attendre a priori à ce qu'il se comporte comme vous l'aviez pensé .

kill [-SIGNAL]
   <numéro_de_processus_>
killall [-SIGNAL]
   <nom_de_processus_>

Les signaux peuvent être spécifiés par un nombre ou par un nom. Exécutez la commande kill -l pour voir la liste des signaux disponibles. Les plus fréquemment utilisés sont :

  • TERM ou 15 : c'est le signal envoyé par défaut quand le nom ou le numéro du signal est omis. Il termine le processus élégamment.

  • STOP ou 19 : ce signal est utilisé pour suspendre un processus. Envoyez le signal CONT ou 18 pour reprendre un processus suspendu.

  • KILL ou 9 : ce signal est utilisé pour forcer l'arrêt d'un processus. Il est généralement utilisé pour terminer un processus qui ne répond plus (ou « gelé »). Il termine le processus brutalement.

Quelques exemples:

  • kill 785 : demande au processus identifié par le numéro 785 de terminer l'exécution, donnant ainsi la possibilité au processus d'effectuer toute opération de nettoyage nécessaire. ;

  • kill -KILL 785 : force l'arrêt du processus identifié par le numéro 785 sans laissé au processus la possibilité d'effectuer aucune opération de nettoyage. Le processus se termine immédiatement ;

  • killall -TERM make : demande à tous les processus nommés make lancés par cet utilisateur de terminer l'exécution.

Quoi qu'il arrive, vous ne contrôlerez que vos propres processus, (sauf si vous êtes root), donc ne vous inquiétez pas des processus des autres utilisateurs puisqu'ils ne seront pas affectés.

2.3. Mixer ps et kill: top

top est un programme qui remplit à la fois les fonction de ps et kill. Il permet aussi de contrôler les processus en temps réel, en fournissant des informations sur l'usage de la mémoire, la CPU le temps d'exécution. Voir Figure 17.1, « Contrôler les processus avec top ».

Figure 17.1. Contrôler les processus avec top

Contrôler les processus avec top

top se contrôle à partir du clavier. Les commandes sont sensibles à la casse. Vous pouvez accéder à l'aide en tapant sur h. Voici quelques-une des commandes les plus utiles :

  • k : envoie un signal à un processus. top vous demandera alors le PID du processus suivi du numéro ou du nom du signal à envoyer (TERM ou 15, par défaut) ;

  • M : trie par taux d'occupation mémoire (champ %MEM) ;

  • P : trie les processus selon le temps CPU qu'ils consomment (champ %CPU) : c'est le tri par défaut ;

  • u : affiche les processus d'un utilisateur donné. top vous demandera d'entrer le nom de l'utilisateur, et non son UID. Si vous n'entrez aucun nom, tous les processus seront affichés ;

  • i : par défaut, tous les processus, même endormis sont affichés. Cette commande fait en sorte que seuls les processus en cours d'exécution soient affichés. (processus dont le champ STAT indique R, Running soit en cours d'exécution) mais pas les autres. Un nouvel appel à cette commande permettra de revenir à l'état antérieur.