Linux Tutorial · 4 min read · Oct 16, 2025

Comment extraire des valeurs de top et les tracer

Comment extraire des valeurs de top et les tracer

Par : Showayb Zahda+

De nombreux chercheurs qui effectuent une évaluation des performances et un benchmarking doivent capturer les valeurs du CPU et de la RAM. D’autres pourraient également avoir besoin de capturer le débit. Dans ce court tutoriel, je vais montrer comment je capture les valeurs du CPU et de la RAM à partir de “top” et les extraire ensuite en une seule commande.

Pour capturer et stocker la sortie de top, utilisez le mode batch “top -b”. Par défaut, top met à jour sa lecture toutes les 10 secondes. Cependant, certains chercheurs ont besoin des valeurs chaque seconde. Eh bien, c’est facile, il suffit de passer le paramètre d, la commande devient “top -b -d 1”. 1 ici représente une seconde. Cette commande capturera la sortie de top chaque seconde. Mais ce n’est pas encore fini. Vous devez le stocker. C’est facile, il suffit de rediriger la sortie vers un fichier :

top -b -d 1 > top.txt

Après avoir terminé votre expérience, n’oubliez pas d’arrêter top en appuyant sur “ctrl + c”. Maintenant, vous avez le fichier qui contient une énorme quantité de lignes et ce dont vous avez besoin n’est qu’une partie d’une ligne. Heureusement, le format de la sortie est fixe et cela rend l’extraction des valeurs très facile.

Ce qui suit est une partie d’une des secondes de top. En regardant la sortie, vous pouvez voir qu’il y a une ligne qui commence par Cpu(s). et la ligne qui suit est Mem:. En fait, nous avons besoin d’une partie de ces lignes et non de toutes. Alors, comment faire cela.

top 18: 54:43 up 4:05, 2 users, load average: 3.64, 2.35, 1.37  
Tasks: 135 total, 6 running, 129 sleeping, 0 stopped, 0 zombie  
Cpu(s): 19.2%us, 19.7%sy, 0.0%ni, 61.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st  
Mem: 2054160k total, 2016144k used, 38016k free, 12292k buffers  
Swap: 4417864k total, 38360k used, 4379504k free, 1310488k cached  
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND  
6929 shuaib 15 0 173m 12m 8940 R 65 0.6 7:22.44 gtkgnash  
6916 shuaib 15 0 525m 58m 22m S 6 2.9 0:56.39 totem  
5717 root 15 0 491m 87m 12m S 3 4.4 2:13.24 Xorg

Si vous n’êtes pas familier avec Linux, les choses peuvent vous sembler étranges, mais de toute façon, utilisez simplement les commandes que je vais fournir et faites votre travail. Les commandes que j’utiliserai sont ici, cat, grep, cut, nl. Je les utilise avec un pipeline, donc tout sera une seule commande. :)

cat top.txt | grep Cpu

Cette commande affichera quelque chose comme ce qui suit :

Cpu(s): 14.3%us, 7.4%sy, 0.0%ni, 73.9%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st  
Cpu(s): 15.3%us, 7.4%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st  
Cpu(s): 11.7%us, 5.4%sy, 0.0%ni, 76.6%id, 2.9%wa, 0.5%hi, 2.9%si, 0.0%st  
Cpu(s): 19.6%us, 9.3%sy, 0.0%ni, 66.7%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st  
Cpu(s): 14.8%us, 9.9%sy, 0.0%ni, 70.4%id, 0.0%wa, 0.5%hi, 4.4%si, 0.0%st  
Cpu(s): 16.2%us, 9.3%sy, 0.0%ni, 67.2%id, 0.0%wa, 0.0%hi, 7.4%si, 0.0%st  
Cpu(s): 12.3%us, 8.9%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 6.4%si, 0.0%st  
Cpu(s): 19.2%us, 11.8%sy, 0.0%ni, 63.1%id, 1.0%wa, 0.0%hi, 4.9%si, 0.0%st  
Cpu(s): 16.2%us, 10.3%sy, 0.0%ni, 68.1%id, 0.0%wa, 0.5%hi, 4.9%si, 0.0%st  
Cpu(s): 17.7%us, 9.9%sy, 0.0%ni, 68.5%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st  
Cpu(s): 15.7%us, 9.8%sy, 0.0%ni, 70.6%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st  
Cpu(s): 13.7%us, 7.4%sy, 0.0%ni, 74.0%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st

Wooow c’est de la magie. Eh bien, considérez-le si vous le souhaitez. Quoi qu’il en soit, comme vous pouvez le voir, chaque ligne CPU représente la lecture du CPU en une seconde. Mais disons que j’ai besoin de la valeur d’inactivité de cette ligne qui est par exemple “68.1%id,”. Eh bien, maintenant vient le tour de la coupe. La commande cut coupe les données dans un fichier ou une sortie standard en fonction du numéro de colonne. Le numéro de colonne est le nombre de caractères dans une ligne. Tout compte, c’est-à-dire que % est un, l’espace est un, 5 est une colonne. Alors, comment compter, vous pouvez utiliser n’importe quel éditeur de texte et lire en bas de l’éditeur le numéro de colonne ou vous pouvez le faire manuellement.

En utilisant l’éditeur de texte, j’ai trouvé que la colonne 35 à 39 est le nombre qui représente la valeur d’inactivité. Alors, comment le couper. Nous continuons avec notre commande :

cat top.txt | grep Cpu | cut -c 35-39

La sortie est ci-dessous :

73.9
72.4
76.6
66.7
70.4
67.2
72.4
63.1
68.1
68.5
70.6
74.0

Woow encore une magie. C’est bien. cut -c 35-39 signifie couper les colonnes 35 à 39 de l’entrée et les afficher dans le terminal. Donc, si vous voulez capturer la partie %us. Il suffit de compter les colonnes et de les remplacer. N’oubliez pas que nous avons capturé les valeurs chaque seconde. Alors, comment ajouter les secondes, c’est facile, utilisez nl : numéro de ligne :

cat top.txt | grep Cpu | cut -c 35-39 | nl

1     73.9
2     72.4
3     76.6
4     66.7
5     70.4
6     67.2
7     72.4
8     63.1
9     68.1
10     68.5
11     70.6
12     74.0

Eh bien, si vous capturez top toutes les 3 secondes, vous pouvez faire ceci :

cat top.txt | grep Cpu | cut -c 35-39 | nl -i 3
1 73.9  
4 72.4  
7 76.6  
10 66.7  
13 70.4  
16 67.2  
19 72.4  
22 63.1  
25 68.1  
28 68.5  
31 70.6  
34 74.0

Woow c’est fantastique aussi. Maintenant, redirigez simplement la sortie vers un fichier :

cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txt

Prenez le fichier pour gnuplot ou tout autre logiciel de traçage et profitez-en.

Pour la partie Mem. Je suppose que c’est votre tour de le faire en suivant les mêmes étapes mais en changeant les paramètres.

Cheers
Showayb A A Zahda
[email protected]

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.