3. Envoyer des signaux aux processus : kill, killall, top

3.1. 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, de façon optionnelle, recevoir un numéro de signal en argument. Par défaut, elles envoient toutes deux le signal 15 (TERM) à un ou plusieurs 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 à partir de son nom. Par exemple, si le nom du processus est « mozilla », vous pouvez taper :

$ killall -9 mozilla

Quoi qu'il arrive, vous ne tuerez que vos propres processus (sauf si vous êtes root), donc ne vous inquiétez pas des processus des autres utilisateurs si vous travaillez sous un système à utilisateurs multiples, ils ne seront pas affectés.

3.2. top

top est un programme qui remplit à la fois les fonctions de ps et de 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, etc. Voir Figure 10.1, « Contrôler les processus avec top ») :

Figure 10.1. Contrôler les processus avec top

Contrôler les processus avec top

top se contrôle entièrement à partir du clavier. Une aide (en anglais) est disponible en tapant sur h. Voici quelques-unes des commandes disponibles :

  • k : sert à envoyer 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 : sert à trier les processus selon le temps CPU qu'ils consomment (champ %CPU) : c'est le tri par défaut) ;

  • u : cette commande sert à afficher les processus d'un utilisateur donné. top vous demandera lequel. Vous devez entrer le nom de l'utilisateur, pas son UID. Si vous n'entrez aucun nom, tous les processus seront affichés ;

  • i : 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 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.

  • r : sert à changer la priorité du processus choisi.