Les processus
Objectifs
Savoir ce qu'est un processus
Savoir lister les processus et prendre en compte les ressources qu'ils utilisent
Définition : Processus
Un processus est un programme en cours d'exécution. Il exécute des instructions sur le processeur et peut utiliser de la mémoire vive ou de l'espace disque. Lorsque l'on démarre un logiciel, celui-ci va créer un ou plusieurs processus pour effectuer ses tâches.
Chaque processus possède un identifiant unique appelé PID
Définition : Processus parent
Chaque processus possède un processus parent.
En effet chaque processus est créé par un autre processus, qui est donc son processus parent. Le seul processus à ne pas avoir de parent est le premier à être lancé au démarrage : il s'agit du processus init
, qui a pour PID 1, et qui démarre le système d'exploitation.
Syntaxe : Lister les processus : ps -ax
ps -ax
La commande ps
permet de lister les processus. On utilise l'option ax
pour afficher tous les processus de la machine (pas uniquement ceux de la console ouverte ou ceux ayant une interface graphique).
Exemple :
ps ax
PID TTY STAT TIME COMMAND
1 ? Ss 0:09 /sbin/init
2 ? S 0:00 [kthreadd]
3 ? I< 0:00 [rcu_gp]
4 ? I< 0:00 [rcu_par_gp]
6 ? I< 0:00 [kworker/0:0H-kblockd]
9 ? I< 0:00 [mm_percpu_wq]
10 ? S 0:00 [ksoftirqd/0]
11 ? I 0:12 [rcu_sched]
12 ? S 0:00 [migration/0]
13 ? S 0:00 [cpuhp/0]
14 ? S 0:00 [cpuhp/1]
15 ? S 0:00 [migration/1]
16 ? S 0:00 [ksoftirqd/1]
18 ? I< 0:00 [kworker/1:0H-events_highpri]
19 ? S 0:00 [cpuhp/2]
20 ? S 0:00 [migration/2]
21 ? S 0:19 [ksoftirqd/2]
[...]
15371 ? S 0:00 /bin/sh -c /usr/lib/firefox/firefox
15372 ? Sl 16:56 /usr/lib/firefox/firefox
15433 ? Sl 7:14 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser 153
15504 ? Sl 1:58 /usr/lib/firefox/firefox -contentproc -childID 3 -isForBrowser -prefsLen 6414 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser
15554 ? Sl 3:53 /usr/lib/firefox/firefox -contentproc -childID 4 -isForBrowser -prefsLen 7212 -prefMapSize 236261 -parentBuildID 20201112153044 -appdir /usr/lib/firefox/browser
27333 ? S 0:00 /bin/sh -c spotify
27334 ? Sl 0:43 spotify
27337 ? S 0:00 /usr/share/spotify/spotify --type=zygote --no-zygote-sandbox --no-sandbox --log-file=/usr/share/spotify/debug.log --log-severity=disable --product-version=Spotif
27338 ? S 0:00 /usr/share/spotify/spotify --type=zygote --no-sandbox --log-file=/usr/share/spotify/debug.log --log-severity=disable --product-version=Spotify/1.1.42.622 --lang=
27352 ? Sl 0:30 /usr/share/spotify/spotify --type=gpu-process --field-trial-handle=10118108429751651102,14475875873737677976,131072 --enable-features=CastMediaRouteProvider --di
27363 ? Sl 0:02 /usr/share/spotify/spotify --type=utility --utility-sub-type=network.mojom.NetworkService --field-trial-handle=10118108429751651102,14475875873737677976,131072 -
27379 ? Sl 1:18 /usr/share/spotify/spotify --type=renderer --no-sandbox --log-file=/usr/share/spotify/debug.log --field-trial-handle=10118108429751651102,14475875873737677976,13
28731 pts/0 R+ 0:00 ps ax
La résultat est ici tronqué, car on constate qu'il y a beaucoup de processus qui s'exécutent en simultané sur la machine. Pour chaque, on peut voir leur PID (première colonne) ainsi que leur nom (dernière colonne). La plupart ont des noms qui ne sont pas très parlant, en fait il s'agit de la commande qui a servi à lancer le processus. Cependant avec un peu de déduction, on peut supposer ici qu'il y a Firefox et Spotify qui sont en train de fonctionner.
On remarque aussi le processus 1 /sbin/init
, ainsi que le dernier de la liste ps ax
: c'est la commande que l'on vient de lancer, qui est un processus comme les autres.
Remarque : Utilisation des ressources
L'un des rôles du système d'exploitation est d'allouer les ressources à chaque processus, en particulier de l'espace en mémoire vive et du temps d'exécution sur le processeur.
Chaque processus utilisant des ressources sur le système, il est intéressant de pouvoir savoir quel processus utilise quoi. Par exemple si l'on manque de mémoire vive, identifier le processus le plus gourmand s'avère intéressant pour ramener le système à un état stable (soit en coupant ce processus si il n'est pas utile, ou en allégeant les tâches qu'il fait, ou en ajoutant de la mémoire, etc.). Il existe de nombreuses manière d'obtenir cette information, l'option "u
" de la commande ps
par exemple. Mais l'outil favori des administrateurs système est sans doute doute htop
.
Conseil : htop
Méthode : État global du système avec htop
La partie supérieure donne des informations sur l'état global du système.
On trouve le pourcentage d'utilisation de chaque cœur du processeur (les processeurs sont souvent composés de plusieurs cœurs, plusieurs unités arithmétiques et logique donc), ainsi que le pourcentage d'utilisation de la RAM et du swap
. Pour la barre indiquant l'utilisation de la RAM, on a plusieurs couleurs :
en vert la mémoire utilisée ;
en bleu la mémoire utilisée par les
buffers
;en jaune le
cache
.
Sur le côté droit on peut aussi trouver le temps depuis lequel la machine est allumée (uptime).
Méthode : Surveiller les processus avec htop
La liste qui occupe la plus grande place dans l'interface est la liste des processus, actualisée en continu. Elle est similaire au retour de la commande ps
, mais plus agréable à utiliser pour naviguer dans les processus et effectuer du tri. Par exemple en appuyant sur la touche F6 (pour Sort By dans le menu du bas) on peut choisir de trier la liste selon certains critères, comme le pourcentage d'utilisation de la mémoire.
On voit par exemple ici de nombreux processus pour Firefox, qui consomment 9,5% de la RAM de la machine.
À retenir
Tout les programmes créent des processus sur la machine pour pouvoir exécuter des instructions. Ces processus consomment des ressources (mémoire vive, temps processeur) qui sont réparties par le système d'exploitation. Il est possible de lister les processus et leur utilisation des ressources avec la commande htop
, pour identifier d'éventuels processus trop gourmands.
Complément :
htop explained: explanation of everything you can see in htop/top on Linux, peteris.rocks/blog/htop, 2019.