Contrôle des processus


Utilité

Il se peut qu'une commande ne termine pas ou dure trop longtemps. Cela arrivera certainement par erreur durant les travaux dirigés de programmation !
Il y aussi des commandes comme xterm qui ne se terminera que si l'on termine son propre shell (par exit).
Enfin certaines commandes sont volontairement conçues pour ne pas terminer, comme yes ou xeyes, par exemple.

Normalement, l'interpréteur de commandes attend la fin de la commande en cours avant d'en accepter une nouvelle et il se trouve donc bloqué dans les situations envisagées ci-dessus. Heureusement, on dispose de plusieurs moyens d'action sur la commande en cours.
Le plus brutal, est C-c qui interrompt définitivement la commande, sans possibilité de reprise. On obtient C-c en appuyant sur la touche c alors que la touche Control (ou Ctrl) est enfoncée.
On peut aussi suspendre la commande courante par C-z (Control z).
Une commande que l'on vient de suspendre peut être relancée par la commande fg (comme foreground).

On peut également la relancer en arrière-plan par la commande bg (comme background). Une commande qui s'exécute en arrière-plan laisse l'interpéteur de commande disponible.
Une commande peut être directement lancée en arrière-plan en ajoutant un & à la fin. Par exemple, la commande :
xterm &
est équivalente à la séquence suivante :
xterm
C-z
bg

Et si on a lancé une commande comme xeyes &, que peut-on faire ? Il est clair que C-c ou C-z n'agissent que sur la commande de premier-plan.
Et, comme on peut avoir plusieurs commandes en arrière-plan, il faut pouvoir désigner celle sur laquelle on veut agir. On lance alors la commande ps qui nous donne le pid du processus concerné que l'on utilise ensuite dans une commande kill appropriée, voir ps et kill ci-dessous.

On remarquera que l'on peut ainsi tuer son bash ... mais on s'en lasse vite !

Les commandes indispensables

C-c
Interrompt définitivement la commande de premier plan, sans possibilité de reprise.

C-z
Suspend la commande de premier plan. Elle peut être relancée par les commandes fg ou bg.

fg
La commande fg permet de relancer au premier plan la dernière commande, qu'elle soit suspendue ou non (cas d'une commande d'arrière-plan).

bg
La commande bg permet de relancer en arrière-plan la dernière commande suspendue.

ps
La commande ps, utilisée sans argument, liste tous les processus attaché au terminal. Chaque ligne affichée commence par le PID qui est le numéro qui identifie chaque processus dans le système. On repère ainsi le pid d'un processus que l'on pourra supprimer par la commande kill.

kill
La commande kill s'utilise en général avec une option qui indique l'action voulue et prend en paramètre le pid du processus concerné. On utilise surtout :
kill -KILL pid   qui interrompt définitivement (comme C-c)
ou
kill -STOP pid   qui suspend (comme C-z), on peut relancer ensuite par kill -CONT pid   (équivalent à fg ou bg).


URL: https://www.enseignement.polytechnique.fr/profs/informatique/Philippe.Chassignet/INIT/controle.html

Pour toutes suggestions, commentaires ou remarques, email : Philippe.Chassignet@polytechnique.fr