La commande ps
permet de voir les processus présents sur le serveur et quel est leur état d’exécution mais cet affichage reste cependant figé. Les commandes top
et htop
permettent quand à elles de manipuler les processus et de les visualiser en temps réel.
Commande ps
La commande ps
(Processus Snapshot) permet de voir plusieurs informations sur les processus dont notamment l’utilisateur (USER), l’identifiant du processus (PID) et le statut (STAT).
# ps aux |
Dans l’ordre nous avons :
- USER : l’utilisateur ayant lancé le processus
- PID (Process IDentifiant) : l’identifiant unique de processus définit par le système
- %CPU : le pourcentage d’utilisation du processeur
- %MEM : le pourcentage de mémoire physique (RAM) utilisée
- VSZ (Virtual memory SiZe) : la quantité de mémoire virtuelle (swap) utilisée en Kio
- RSS (Resident Set Size) : la quantité de mémoire physique (RAM) occupée par le processus en Kio
- TTY (Text TeletYpe) : le terminal qui a lancé le processus. Le “?” indique que la commande n’est pas associée à un terminal
- STAT : le statut du processus
- START : l’heure ou la date à laquelle le processus à été lancé
- TIME : le temps total que le cpu a passé sur ce processus et ces enfants
- COMMAND : la commande qui a été exécutée pour lancer le processus
Il est aussi possible de voir le PPID avec ps -alex
par exemple.
- PPID : Numéro du processus parent (Parent Process Id entification).
Le statut STAT indique l’état dans lequel un processus se trouve. Parmi les plus courants nous avons l’état :
- R (En cours d’exécution)
- S (En sommeil interruptible)
- D (En sommeil ininterruptible, généralement par des I/O)
- T (Stoppé)
- W (Pagination, obsolète depuis la version 2.6 du noyau)
- X (Mort, ne devrait jamais arriver)
- Z (Zombie) - Processus terminé mais pas encore pris en compte par son père
Des caractères additionnels apportent plus de précisions sur le statut des processus :
- < : priorité haute
- N : priorité basse
- L : verrouillé en mémoire
- s : en chef de file
- l : en multi-thread
- + : processus d’avant plan
La commande man ps
donne plus d’informations sur les champs et option ci-dessus.
Note : La commande ps
donne l’état des processus à un instant t, pour visualiser les processus en temps réel on peut utiliser la commande top.
Commande top
La commande top
permet d’avoir des informations sur les processus en temps réel et de pouvoir les manipuler. L’avantage de top
est de pouvoir paramétrer l’affichage des processus de façon très précise et de pouvoir enregistrer cette configuration pour une utilisation ultérieure.
Par défaut la commande top affiche les processus qui occupent le plus de mémoire (colonne%CPU) et les renseignements suivant :
# Top |
Le Summary display
La partie haute de top (Summary display) affiche les informations générales :
top - 10:28:29 up 209 days, 5:24, 7 user, load average: 0,00, 0,01, 0,05 |
(Ligne 1) Nom de la commande, heure du serveur, uptime, nombre d’utilisateur connecté, charge moyenne (depuis 1min, 5min, 15 min). Il est à noté que ces résultats sont équivalemment à la commande uptime.
(Ligne 2) Nombre de processus total et leur statut (running, sleeping, stopped, zombie)
(Ligne 3) Le pourcentage de temps Cpu utilisé par :
- us (user) : processus utilisateurs
- sy (systeme) : processus système (kernel threads)
- ni (niced) : processus à qui on a changé la priorité
- id (iddle) : non sollicité
- wa (wait) : l’attente pour les entrées/sorties
- hi (hardware interruption) : les interruptions matérielles (irq)
- si (software interruption) : les interruptions logicielles (isq)
- st (steal time) : l’hyperviseur
(Ligne 4) Mémoire physique (totale, utilisée, libre, tampons). L’unité en Kio peut être changé avec la touche e
(Ligne 5) Mémoire virtuelle (totale, utilisée, libre, en cache). L’unité en Kio peut être changé avec la touche e
Espace vide
L’espace vide entre la partie 1 et 3 permet de dialoguer avec la commande top, certaines options demanderont de préciser des valeurs.
Affichage des sprocessus
La 3ème partie affiche les processus avec plusieurs champs : PID
, USER
, PR
(priorité), NI
(nice), etc., il est possible avec la touche f d’en ajouter d’autre (ou d’en enlever). L’option f permet également de voir à quoi correspond chaque champs.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
Le manuel de top
est très complet, en voici quelques extraits. Pour plus de précision vous pouvez afficher l’aide avec -h
ou consulter le manuel man top
.
Note : La commande top
différencie les touches minuscules et majuscules.
Commande générales :
q : ferme top |
Manipulation de la partie haute de top (Summary display)
l : affiche/enlève les informations serveur et la charge moyenne |
Affichage de l’information :
f, F : rajoute des champs. |
Traitement des résultats
u, U : filtre en fonction d'un utilisateur |
Commande htop
L’utilisation de htop
est un peu différence qu’avec top
. La commande htop
est cependant plus interactive et visuellement plus agréable.
1 [ 0.0%] Tasks: 108, 168 thr; 1 running |
Dans htop
on distingue les options de la ligne de commande qui sont des options à spécifier avant de lancer htop
des commandes interactives qui peuvent uniquement être lancées une fois que htop
a démarré.
Les options de la ligne de commandes :
-d
permet de spécifier la période de rafraîchissement (en seconde) :
htop -d 0,25 // toutes les 25 millisecondes |
-C
: Pour n’avoir qu’une seule couleur (blanc) :
htop -C |
-h
: Affiche l’aide des options pour la ligne de commande :
htop -h |
-p
: Affiche uniquement le PID choisi :
htop -p 4242 |
-s
permet de trier en fonction d’une colonne :
htop -s PID |
Pour avoir la liste des colonnes disponible :
htop --sort-key help |
-u
: Affiche uniquement les processus d’un utilisateur
htop -u aline |
-v
: Affiche la version :
htop -v |
Les options interractives :
Une fois que le programme htop
a été lancé vous voyez ceci :
1 [ 0.0%] Tasks: 108, 168 thr; 1 running |
Nous avons 3 parties distinctes, la première affiche les informations générales ::
CPU [ priorité_faible normal noyau virtualisé %utilisation] |
La 2eme partie affiche les processus :
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command |
La 3eme les menus interactifs :
F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit |
Il est possible à tout moment utiliser les commandes suivantes :
Commande générales : |
Traitement des résultats :
0 à 9 : Recherche incrémentale en fonction du PID |
Actions sur les processus :
F7, ] : Augmente la priorité du processus sélectionné (que si la commande a été lancé en root) |
Visualiser une arborescence
Avec pstree
La commande pstree permet de voir processus sous forme d’un arbre. Par défaut la racine de pstree commence avec init si rien n’est précisé. (Ne semble pas afficher les trhreads noyau).
# pstree |
Pour faciliter la lecture pstree
fusionne visuellement les branches identiques en les plaçant entre crochets et les préfixant avec le nombre de répétitions.
# pstree |
L’option -p
sans paramètre permet de visualiser le PID des processus :
# pstree -p |
Il est possible de lister une arborescence à partir d’un processus particulier en précisant son PID :
# pstree -p 1612 |
Il est aussi possible de lister les processus d’un utilisateur.
# pstree aline |
Avec ps
La commande ps
permet également d’afficher les processus sous forme d’un arbre. Contrairement à pstree
les threads noyaux sont affichés. Les options sont axjf
.
# ps axjf |
Avec top
La commande top
, comme ps
et pstree
permet un affichage en arbre. Une fois la commande top
lancée il faut appuyer sur la touche V Majuscule.
top - 15:32:19 up 214 days, 10:28, 1 user, load average: 0,00, 0,01, 0,05 |
Avec htop
La commande htop
, comme top
, ps
et pstree
permet un affichage en arbre. Une fois la commande htop
lancée il faut appuyer sur la touche F5.
1 [ 0.0%] Tasks: 108, 168 thr; 1 running |
Les touches +,- vous permettront de fermer/ouvrir une arborescence.
Afficher les threads noyau
Il est possible de visualiser les threads noyau en utilisant ps
bien que la façon dont cette commande les affiche n’est pas déterminé.
# ps -ef |
On peut par exemple restreindre la sortie au PID 2 (kthreadd) et à ses enfants :
# ps -f -p 2 --ppid 2 |