Le contrôle
de Processus

© 1996-2001 Michel Luc
date de création : 10 Janvier 1997


Permission vous est accordée de faire des copies et de distribuer ces copies sous les termes de la licence GNU FDL.


Les liens symboliques Menu: le Shell et les commandes Index Linux TAR et GZIP

1-Le contrôle de processus.


1.1-Le principe du processus

Vous avez certainement remarqué dans vôtre fichier /etc/fstab, une ligne comme :
      none    /proc      proc        defaults      1    1
 
et vous avez également un répertoire /proc :
C'est un système de fichiers virtuels qui sont simulés en mémoire et pas sur le disque.
Aussi si vous utilisez la commande ls -l /proc, vous noterez qu'ils ont la particularité d'avoir une longueur nulle.

La commande ps vous donnera des infos fort utiles :Aussi consulter sa doc !

_Le contrôle de processus est une possibilité offerte par beaucoup de shells, bash et tcsh entre autre.
Cela permet de contrôler plusieurs exécutions de commande depuis le même terminal.

Le processus est le nom qui désigne un programme en cours d'exécution, donc à chaque fois que vous lancez un programme... il y a un processus.
_La commande ps affiche la liste des processus en cours :
# ps

Vous pourrez lire aussi quelques fois 'job' à la place de processus.

Les processus peuvent être en avant-plan ou en tâche de fond.
Ce qui peut permettre de ne pas rester devant son écran à attendre qu'une compilation (longue) s'achève, mais pendant ce temps pouvoir lancer d'autres applications ?..
Pour cela il suffit de lancer la compilation en tâche de fond et de travailler en avant-plan.
Les processus peuvent être suspendus sans être arretés.

1.2-Explications !

Prenons un exemple, vous devez avoir sur vôtre système une commande yes, qui ne fait rien d'autre que d'afficher des Y à l'écran : Testez la :
# yes
Interrompez son exécution avec la combinaison des touches [ Ctrl ]+[ C ]
#
Maintenant nous redirigeons son affichage, dans le néan (vers null part ?).
# yes > /dev/null
Mais l'invite ne réapparait pas ?...Alors : [ Ctrl ]+[ C ] pour stoper l'exécution.
#
Utilisons le processus en tâche de fond pour yes.
# yes > /dev/null &
HAaa ! C'est mieux ?..
Maintenant yes s'exécute en tâche de fond.
Pour vérifier cela :
# ps  ou  # jobs
Le chiffre [1] est le numéro de job suivi du numéro du pid (process id), ce numéro varie en fonction du nombre de processus déjà lancés.
Si quantité d'applications sont déjà executées en tache de fond, le numéro de pid peut-etre 353 ou 7085... ?
Pour arreter l'exécution de yes, il faut utiliser la commande kill avec le numéro de pid correspondant à l'application qui s'exécute en tâche de fond et que l'on veut stoper.
# kill % 353  ou  kill 353
_Vérifiez :
# jobs  ou  ps

Ce principe va permettre de lancer (en tâche de fond ou pas) et de tuer les démons des "RunLevel" :
Chaque démon aura sont numéro de pid enregistré dans un fichier portant son nom et situé dans le répertoire /var/run/.
Par exemple pour "gpm" son numéro de pid sera écrit dans /var/run/gpm.pid et la commande cat /var/run/gpm.pid affichera ce numéro. Et plutot que de récupérer ce numéro de pid avec la commande ps -aux | grep gpm, puis de lancer la commande kill suivi du numéro de pid, il sera plus simple d'utiliser le numéro du pid contenu dans le fichier /var/run/gpm.pid en utilisant la commande kill `cat /var/run/gpm.pid`
Mais revenons à nôtre "Yes".

On recommence....
Relancez yes.
# yes > /dev/null
Et pour récupérer l'invite ?... Nous n'allons pas stoper l'exécution mais seulement la suspendre, avec [ Ctrl ]+[ Z ].
Pour continuer l'exécution de yes :
# fg
Suspendons la de nouveau avec [ Ctrl ]+[ Z ].
Nous allons la relancer cette fois en tâche de fond :
# bg
... Voilà vous pouvez vérifier :
# jobs ou # ps
... Stoper l'exécution de yes avec [ Ctrl ]+[ C ] ou kill.


Les liens symboliques haut de page TAR et GZIP
Copyleft  Michel Luc cern91@tuxfamily.org Document sous licence FDL