Introduction à Linux : Les processus
Nous avons vu précédemment que le système Linux était Multi-tache,
on peut donc utiliser plusieurs programmes ou commandes simultanéments. C'est ce que l'on appelle les processus...
Les facilités de gestion des processus et des jobs des shell
sont assez avancées. Il est donc conseillé de ne pas utiliser ces fonction dans un premier temps...
Chaque fois que l'on lance un programme (commande, application, ...), on crée un processus.
C'est à dire un nouvel environnement dans lequel s'exécute le programme.
Cet environnement comprend des variables d'état et de choix. Du point de vue de
l'utilisateur, plusieurs processus peuvent s'exécuter à un moment donné
de façon concurrente.
Le système de Job control, en français contrôle de travaux
multiples, permet le lancement de plusieurs travaux en parallèle, de
les reprendre tour à tour comme travail de premier plan et de mettre
un travail de premier plan en second plan.
Le concept de processus est plus général : un processus est identifié de
façon unique dans le système par son numéro PID. Alors qu'un job est
identifié par un numéro qui est unique seulement dans le shell
correspondant. Cela explique qu'on ne puisse employer jobs
que pour les processus du shell courant.
La commande ps permet d'obtenir la liste des processus et jobs celle des jobs.
Suspendre un processus :
Si le processus à suspendre est celui qui monopolise le clavier, il
suffit de taper CTRL-Z. Sinon, on entre stop n
ou
Avec fg
(foreground) et bg
(background) on peut reprendre
l'exécution, respectivement en premier plan, donc monopolisant le clavier, ou en
arrière-plan, d'un job en
indiquant son numéro de job. Certains jobs interactifs (éditeurs par
exemples) ne peuvent pas être mis en arrière-plan sans être suspendus
automatiquement à nouveau.
Pour reprendre l'exécution du dernier processus suspendu ou pour le
reprendre au premier plan s'il est en arrière-plan, il suffit d'entrer %%
Pour détruire un processus ou un jobs, on utilise la commande kill (tuer)
sur ceux qui nous appartiennent...
Kill seul tente de détruire le processus, l'option -9, Force la destruction.
Pour connaître ces numéros, il suffit d'utiliser la commande ps.
kill 603
kill -9 603
kill %3
kill -9 %3
Pour lancer un processus en arrière plan dès son lancement, il suffit de terminer la commande par &.
Exemples :
La commande yes
, à priori totalement idiote, se contente d'afficher des "y" à l'infini.
Essayons :
Un autre exemple :
yes
Les y s'affichent à l'infini... le seul moyen pour l'interrompre est [Ctrl-C].
yes > /dev/null &
la commande > /dev/null
redirige l'affichage dans un "trou noir" (rien), et la commande &
le place en arrière plan.
ps
ou mieux jobs
Le chiffre [1] est le numéro de job (yes est bien toujours Actif)
kill %1
jobs
, la commande yes n'est plus active...
yes > /dev/null
fg
pour le mettre en avant-plan
bg
en tache de fond.
ps
ou jobs
...