Un processus peut lui même créer un autre processus, il devient donc un processus parent ou père, et le nouveau processus, un processus enfant. Ce dernier est identifié par son PID, et le processus père par son numéro de processus appelé PPID (Parent Process Identification).
Tous les processus sont ainsi identifiés par leur PID, mais aussi par le PPID du processus qui la créé, car tous les processus ont été créés par un autre processus. Oui mais dans tout ça, c'est qui a créé le premier processus ? Le seul qui ne suit pas cette règle est le premier processus lancé sur le système le processus init qui n'a pas de père et qui a pour PID 1.
UID PID PPID C STIME TTY TIME COMMAND root 1 0 0 Dec 6 ? 1:02 init ... jean 319 300 0 10:30:30 ? 0:02 /usr/dt/bin/dtsession olivier 321 319 0 10:30:34 ttyp1 0:02 csh olivier 324 321 0 10:32:12 ttyp1 0:00 ps -efLa signification des différentes colonnes est la suivante:
Certains processus sont permanents, c'est à dire qu'ils sont lancés au démarrage du système et arrêtés uniquement à l'arrêt du système. On appelle ces process des daemons, le terme démon est une francisation, daemon sont des abréviations.
Pour voir les process d'un seul utilisateur, vous pouvez taper :
ps -u olivierD'un UNIX à l'autre la sortie peut changer. Sous LINUX par exemple ps -Al permet une sortie assez riche, en faisant un man ps, vous aurez l'éventail de tous les paramètres possibles.
Vous disposez de la commande nice pour modifier la priorité d'un processus. La syntaxe est la suivante :
nice -valeur commandePlus le nombre est grand, plus la priorité est faible. Par exemple une valeur de 0 donne, la priorité la plus haute 20 donne la priorité la plus faible.
La fourchette de valeur dépend de l'UNIX qu'on utilise.
Par exemple :
nice -5 ps -efGénéralement on utilise nice sur des commandes qui prennent du temps, sur des commandes courantes l'effet de nice est imperceptible. On l'utilisera par exemple pour compiler un programme.
nice -5 cc monprogramme.c
kill -9 PIDUn utilisateur ne peut arrêter que les processus qui lui appartient (qu'il a lancé). Seul l'administrateur système a le droit d'arrêter un processus ne lui appartenant pas.
Vous disposez d'une technique simple qui permet de lancer une commande à partir d'un shell, et de reprendre aussitôt la main. Il vous suffit de rajouter un & à la fin de commande. Celle-ci se lancera en " tâche de fond ", et vous reviendrez directement au prompt du shell.
En tapant une commande en tâche de fond, vous aurez à l'affichage :
> ps ef & [321] >A la suite de la saisie de la commande suivie d'un &, le shell vous donne immédiatement la main, et affiche le numéro du PID du processus lancé.
En lançant une commande à partir du shell sans le & à la fin, et si celle-ci prend du temps à vous rendre la main, vous pouvez faire en sorte qu'elle bascule en tâche de fond, pour que vous repreniez la main.
>netscapeVous voulez basculer netscape en tâche de fond tapez, CTRL+Z, il va afficher
311 stopped +311 étant le PID du process netscape. Tapez ensuite bg (pour background), vous voyez s'afficher
[311]Ca y est votre processus netscape est en tâche de fond et le shell vous rend la main.