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.txtAprè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 XorgSi 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 CpuCette 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%stWooow 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-39La 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 | nl1 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 31 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.0Woow c’est fantastique aussi. Maintenant, redirigez simplement la sortie vers un fichier :
cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txtPrenez 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]
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.