Processus sous Linux
Le but de cette page est d'identifier les commandes principales permettant de visualiser l'exécution des processus sous Linux, ainsi que le résultat de ces commandes.
Question
Exécuter la commande ps
. Quel est le rôle de cette commande ?
Indice
La commande devrait nous retourner ces informations :
eleve@Desktop:~$ ps
PID TTY TIME CMD
13669 pts/0 00:00:00 bash
15254 pts/0 00:00:00 ps
Solution
La commande ps
liste les processus lancés par l'utilisateur à un instant t. C'est pourquoi il n'y a que ces 2 processus : bash
(le terminal) et la commande ps
.
Question
Il est possible de personnaliser les informations que l'on veut afficher avec la commande ps
, par exemple obtenir l'identifiant du parent de chaque processus (PPID).
Conjecturer l'affichage obtenu avec la commande ps -o "pid ppid cmd"
?
Que constatez-vous concernant ces 2 processus ?
Solution
Cette commande va afficher l'identifiant du processus, l'identifiant du parent de ce processus et le nom de ce processus.
eleve@Desktop:~$ ps -o "pid ppid cmd"
PID PPID CMD
13669 13661 bash
15410 13669 ps -o pid ppid cmd
On remarque le processus ps -o pid ppid cmd
a pour PPID 133699 (différent lors de votre manipulation), c'est donc l'enfant du processus bash.
Question
On exécute à présent la commande :
ps -o "user pid ppid cmd" -ax
Pourquoi le nombre de processus est maintenant très grand ?
Indice
Allez lire l'aide de la commande ps
Solution
Grâce à l'argument -ax, on peut visualiser tous les processus de la machine de tous les utilisateurs (y compris donc les processus système).
Question
Quels sont les 2 premiers processus lancés, quel est leur PPID ? Quel est le PID de la racine de l'arbre de processus ?
Indice
On lance une commande précédente, et on regarde au sommet de la liste...
Solution
Les 2 premiers processus sont :
PID1 :
/sbin/init
qui lance la suite logiciel systemdPID 2 :
[kthreadd]
La racine de l'arbre a pour PID 0 mais ne correspond à aucun processus, c'est le seul cas.
Question
Lancer la commande pstree
et donner le rôle de cette commande.
Dire que pourrait être le retour de la commande pstree 0
; tester la commande pour valider vos prédictions.
Solution
pstree
affiche les processus sous forme d'arbre en fonction de leurs liens de parenté. Par défaut, la racine de l'arbre est le processus systemd
Il est possible de changer la racine en passant en paramètre le PID de la racine voulue. pstree 0
affiche donc l'ensemble des processus sous forme d'arbre. On retrouve donc [kthreadd]
et systemd
; les 2 processus enfants de 0.
Question
La commande ps -aux
permet d'afficher tous les processus avec des informations supplémentaires.
Conjecturer la signification des colonnes %CPU
, %MEM
et TIME
.
Solution
%CPU
correspond au pourcentage de temps passé par le processus à utiliser le processeur (par défaut dans les 3 dernières secondes).%MEM
est le pourcentage de la mémoire vive utilisée par le processus.TIME
est le temps passé par le processus à utiliser le processeur depuis sa création.
À noter que la commande ps donne toujours un état à l'instant t.
Question
Lancez le programme Filezilla.
À l'aide de la commande ps
et grep
, faites en sorte que d'afficher uniquement les processus liés au lancement de Filezilla.
Une fois réussi (cf la solution), tuez le processus trouvé, que se passe-t-il ?
Indice
Le symbole | est sûrement intéressant... Il s'agit de la commande pipe dont vous trouverez des informations sur cette page.
Solution
utilisateur 8213 2.1 1.0 1081020 82028 ? Sl 11:04 0:01 filezilla
utilisateur 8281 0.0 0.0 14612 728 pts/1 S+ 11:05 0:00 grep --color=auto filezilla
Question
Il est très simple de créer un fichier texte avec Linux, on peut utiliser le symbole suivant >
suivi du nom de fichier.
Créez un fichier processus.txt
contenant l'ensemble de vos processus.
Question
On va à présent utiliser la commande top
(on sort de la fenêtre avec la touche q), puis htop
. Dire ce que réalisent ces commandes...
Indice
htop est un programme annexe, il peut s'installer, au besoin, avec :
sudo apt install htop
Solution
top
et htop
présente des informations similaires aux commande ps
, mais cette fois-ci avec un aspect dynamique. htop
rajoute également une interface graphique et une utilisation en temps réel du processeur.
Ordonnancement des processus
Un processeur choisit à chaque cycle d’exécution le processus qui doit être exécuté. Le tableau ci-dessous donne pour trois processus P1, P2, P3 :
la durée d’exécution (en nombre de cycles),
l’instant d’arrivée sur le processeur (exprimé en nombre de cycles à partir de 0),
le numéro de priorité.
Le numéro de priorité est d’autant plus petit que la priorité est grande. On suppose qu’à chaque instant, c’est le processus qui a le plus petit numéro de priorité qui est exécuté, ce qui peut provoquer la suspension d’un autre processus, lequel reprendra lorsqu’il sera le plus prioritaire.
Processus | Durée d'exécution | Instant d'arrivée | Numéro de priorité |
P1 | 3 | 3 | 1 |
P2 | 3 | 2 | 2 |
P3 | 4 | 0 | 3 |
Question
Reproduire le tableau ci-dessous sur la copie et indiquer dans chacune des cases le processus exécuté à chaque cycle.

Indice
Les cycles d'un processus ne sont pas forcément contigus...
Interaction avec les processus et priorité
Cet exercice a pour but de découvrir comment interagir avec les processus sur Linux et d'expérimenter sur la priorité des processus.
Dans cet exercice, vous allez avoir besoin de deux terminaux connectés à la même machine Linux. Pour distinguer ces deux terminaux dans la suite, on utilisera les expressions « terminal A » et « terminal B ».
Question
Dans le terminal A, lancez la commande
sleep 600
, qui ne fait qu'attendre pendant 600 secondes.Utilisez le terminal B pour trouver le PID du processus
sleep
grâce aux commandes vues ci-dessus.Dans le terminal B, tapez la commande
kill [PID]
où[PID]
est la valeur trouvée à la question précédente.Que s'est-il passé dans le terminal A ?
Dans le terminal A, relancez la commande
sleep 600
.Dans le terminal B, exécutez la commande
ps -xo "pid ni cmd"
qui permet d'afficher les processus de l'utilisateur avec la priorité, appeléenice
sur Linux (colonneNI
).Quel est le PID et quelle est la priorité du processus
sleep
?
Il est possible de modifier la priorité d'un processus avec la commande
renice
. Les priorités Linux vont de -20 à +19 (plus la valeur est basse, plus la priorité plus importante) mais un utilisateur normal ne peut la modifier que de 0 à 19.Dans le terminal B, exécutez la commande
renice -n 10 [PID]
où[PID]
est le PID trouvé à la question précédente.Relancez la commande
ps -xo "pid ni cmd"
. Qu'observez-vous ?
Solution
Question 2 :
Le processus
sleep
a été interrompu.Question 3 :
Le processus
sleep
a pour priorité 0. Le PID sera différent à chaque fois.Question 4 :
La priorité du processus a bien été modifiée, la valeur passant de 0 à 10.