Un processus est un programme qui tourne. Les programmes sous forme binaire exécutable se trouvent sur votre disque dur ; lorsqu'ils sont exécutés (démarrés), ils sont chargés en mémoire et deviennent des processus. À tout programme que nous démarrons correspond (au moins) un processus.
Les commandes ps
et top
peuvent être utilisées pour voir les processus en train de tourner sur notre machine.
La commande command, exécutée sans argument, affiche les processus lancés par l'utilisateur courant.
$ ps PID TTY TIME CMD 3922 tty2 00:00:00 su 3923 tty2 00:00:00 sh 3941 pts/0 00:00:00 cat 3942 pts/0 00:00:00 ps
Nous voyons ici qu'il y a 4 processus démarrés à partir de notre terminal. Les 4 colonnes sont interprétées de la manière suivante :
Process ID Terminal CPU Time Program/Command
Chaque processus a un identifiant que le système d'exploitation utilise pour le gérer. C'est un nombre entier qui est associé à chaque nouveau processus, et qui est appelé PID (pour "process ID"). L'écart entre le PID 3923 et le PID 3941 de cat indique simplement que quelqu'un a démarré d'autres processus entre le lancement de ces deux processus.
La deuxième colonne liste le terminal auquel le processus est attaché ou le terminal qui contrôle le processus. Vous pouvez utiliser la commande tty
pour savoir dans quel terminal vous introduisez vos commandes.
$ tty /dev/tty2
Vous pouvez vous attendre à ce que votre machine tourne bien plus de processus que ceux qui sont listés lorsque vous lancez simplement la commande ps
sans arguments. En effet, dans ce cas, la liste ne comprend que les processus qui ont été lancé depuis le terminal dans lequel ps a été exécuté. Dans un environnement graphique, cette commande ne liste pas les programmes démarrer à partir des menus ou en cliquant sur des icônes. Le système tourne également de nombreux processus en arrière plan. Pour voir tous les processus, ajoutez l'option -e
:
$ ps -e PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 watchdog/0 6 ? 00:00:00 migration/1 7 ? 00:00:00 ksoftirqd/1 8 ? 00:00:00 watchdog/1 9 ? 00:00:00 events/0 10 ? 00:00:00 events/1 11 ? 00:00:00 khelper 44 ? 00:00:00 kblockd/0 45 ? 00:00:00 kblockd/1 ......................................... ......................................... 3534 tty1 00:00:00 getty 3535 tty2 00:00:00 login 3536 tty3 00:00:00 getty 3537 tty4 00:00:00 getty 3538 tty5 00:00:00 getty 3539 tty6 00:00:00 getty
Si vous voulez terminer un processus que vous avez lancé, vous pouvez le faire en utilisant la commande kill
.
$ kill 3941
Dans ce cas, le PID du processus à terminer est passé en argument. Souvenez-vous que la commande kill n'est pas, par défaut, interactive (aucune confirmation ne sera demandée avant exécution) et ni verbeuse/loquace (la commande ne vous dit pas ce qu'elle fait), elle doit donc être utilisée avec prudence. Vous ne pouvez tuer que vos propres processus. De plus, si un programme est vraiment mort, il ne répondre à la commande; dans ce cas, on utilisera l'option -9
. C'est le numéro du signal SIGKILL, et, si vous êtes vraiment prudent, vous utiliserez la commande "kill -s SIGKILL (pid)" car il est possible que sur votre système, les numéros de signaux soient alloués différemment.
Si vous désirez exécuter un programme en arrière plan et pouvoir introduire d'autres commandes dans le terminal, il suffit de placer une esperluette ("&") après la commande.
$ firefox & [1] 3694 $
Le shell affiche un bref message et retourne à l'invite (le signe dollar). Firefox est lancé (et devrait ouvrir une fenêtre, comme c'est une application graphique). Vous pouvez exécuter d'autres commandes dans le terminal.
Que signifient les deux nombres affichés après que le programme ait été mis en arrière plan? Le nombre entre crochets est un identifiant spécial assigné à chaque programme que vous lancez en arrière plan; il est appelé job number (numéro de tâche). Dans le cas qui nous occupe, le nombre est 1 parce que nous n'avons aucun autre programme tournant en arrière plan dans ce shell.
Le second nombre, 3694 ici, est le numéro de processus dont nous avons parlé plus haut dans une section précédente.
Pour faire revenir votre programme à l'avant plan, il suffit de taper fg
. Le programme prend alors le contrôle de votre terminal tout comme un programme normal et ce jusqu'à ce qu'il finisse.
Si vous avez plusieurs programmes en arrière plan, vous pouvez indiquer à la commande fg
soit le numéro de processus :
$ fg 3694ou le numéro de tâche :
$ fg %1
Pour faire la différence entre les deux, vous devez mettre un signe pour-cent ("%") devant le numéro de tâche.
Si vous voulez mettre en arrière plan un programme qui est en train de tourner à l'avant plan, tapez d'abord Ctrl + Z, pour suspendre le programme et puis utiliser la commande bg
pour relancer son exécution à l'arrière plan.
Pour connaître la liste de tâches qui tournent en arrière plan (et leur état), utilisez la commande jobs
:
$ jobs [1]- Running firefox & [2]+ Exit 2 sort > big_file_sorted 2> big_file_errFirefox est toujours en train de tourner, mais la seconde tâche s'est terminé avec un état d'erreur numéro 2.
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.