Comment vérifier l'utilisation de la mémoire par processus sous Linux

How Check Memory Usage Per Process Linux



De nos jours, un ordinateur peut exécuter plusieurs programmes à la fois. Le processeur n'a aucun problème à gérer tous ces programmes car les processeurs ont plusieurs cœurs pour gérer le multitâche.

Chacun de ces programmes s'exécute comme un ou plusieurs processus. Chaque processus alloue une certaine quantité de RAM ou de mémoire pour lui-même. Il est essentiel que le processus fonctionne correctement. Si un processus ne parvient pas à allouer suffisamment de RAM ou de mémoire, le processus ne peut pas être créé et le programme ne pourra pas démarrer.







Ainsi, l'une des tâches de base que vous effectuez sur votre ordinateur est de vérifier la quantité de mémoire ou de RAM (Random Access Memory) utilisée par chaque processus. Parce que la RAM ou la mémoire de votre ordinateur est limitée.



Imaginez un cas, où vous voulez exécuter un programme et il échoue parce que vous n'avez pas assez de mémoire. Certains processus utilisent peut-être beaucoup de mémoire dont vous n'avez pas besoin pour le moment. Vous pouvez tuer ou arrêter ces processus pour libérer de la RAM ou de la mémoire, afin de pouvoir démarrer vos programmes importants.



Dans cet article, je vais vous montrer comment vérifier l'utilisation de la mémoire de chacun des processus exécutés sur votre machine Linux. J'utiliserai Debian 9 Stretch pour toute la démonstration de cet article. Mais cela devrait fonctionner sur toutes les distributions Linux modernes. Commençons.





Vous pouvez utiliser le ps pour vérifier l'utilisation de la mémoire de tous les processus sous Linux. Il y a un problème avec cette procédure. ps ne vous montre pas vraiment combien de mémoire un processus utilise au format Ko ou Mo, mais il vous montrera combien de mémoire est utilisée en pourcentage.

Vous pouvez vérifier l'utilisation de la mémoire (en pourcentage) de tous les processus exécutés sur votre système d'exploitation Linux avec la commande suivante :



$ps -oupid,utilisateur,%mème,commanderhache| sorte -b -k3 -r

Comme vous pouvez le voir, tous les processus avec une utilisation de la mémoire en pourcentage sont répertoriés par ordre décroissant (les processus utilisant la plus grande partie de la mémoire sont répertoriés en premier).

Vérification de l'utilisation de la mémoire des processus avec pmap :

Vous pouvez vérifier la mémoire d'un processus ou d'un ensemble de processus dans un format lisible par l'homme (en Ko ou kilo-octets) avec pmap commander. Tout ce dont vous avez besoin est le PID des processus dont vous souhaitez vérifier l'utilisation de la mémoire.

Disons que vous souhaitez vérifier la quantité de mémoire utilisée par le processus avec le PID 917. Pour ce faire, exécutez pmap comme suit:

$sudopmap917

Comme vous pouvez le voir, la mémoire totale utilisée par le processus 917 est de 516104 Ko ou kilo-octets. Vous pouvez également voir ici la quantité de mémoire utilisée par les bibliothèques et autres fichiers requis pour exécuter le processus avec le PID 917.

Si vous ne vous souciez pas de la quantité de mémoire utilisée par les bibliothèques ou d'autres fichiers dépendants, exécutez pmap comme suit:

$sudopmap917 | queue -n 1

Comme vous pouvez le voir, seule la mémoire totale utilisée par le processus avec le PID 917 est imprimée à l'écran.

Si vous le souhaitez, vous pouvez filtrer davantage cela avec ok et obtenez uniquement la taille en Ko ou en kilo-octets. Pour ce faire, exécutez pmap comme suit:

$sudopmap917 | queue -n 1 | ok '/ [0-9] K / {imprimer $ 2}'

Comme vous pouvez le voir, seule l'utilisation de la mémoire en Ko ou en kilo-octets est imprimée.

Maintenant, vous pouvez également répertorier la quantité de mémoire utilisée par plusieurs processus en utilisant leurs PID avec pmap comme suit:

$sudopmap917 531 | saisirle total

REMARQUE: Ici, 917 et 531 sont des identifiants de processus ou des PID. Vous pouvez ainsi mettre autant de PID que vous le souhaitez.

Utilisation de pmap pour répertorier l'utilisation de la mémoire de tous les processus en kilo-octets :

Dans cette section, je vais vous montrer comment écrire votre propre script shell pour répertorier l'utilisation de la mémoire de tous les processus exécutés sur votre système d'exploitation Linux dans un format lisible par l'homme (kilo-octets ou Ko).

Créez d'abord un nouveau fichier sysmon dans votre répertoire de travail actuel avec la commande suivante :

$touchersysmon

Rendez maintenant le fichier exécutable avec la commande suivante :

$chmod+x sysmon

sysmon est le script shell qui affichera tous les processus en cours d'exécution PID , PROPRIÉTAIRE , MÉMOIRE (en Ko par ordre décroissant) et COMMANDER . Commençons.

Ouvrez le sysmon script avec votre éditeur de texte préféré, je vais utiliser Kate .

Maintenant, la première commande que je vais exécuter me donnera le PID , PROPRIÉTAIRE et COMMANDER de tous les processus en cours séparés par le symbole deux-points (:) et stockez-le dans le RAWIN variable. Ensuite, parcourez la sortie et imprimez-la à l'écran.

Comme vous pouvez le voir, j'obtiens le bon résultat.

Il est maintenant temps de traiter chaque ligne, de stocker les informations délimitées par deux points dans des variables distinctes. C'est ce que j'ai fait aux lignes 7, 8 et 9.

Comme vous pouvez le voir, je peux imprimer PID , PROPRIÉTAIRE et COMMANDER dans mon propre format maintenant.

Il est maintenant temps de récupérer l'utilisation de la mémoire de chaque PID. La ligne 10 fait exactement cela.

Comme vous pouvez le voir, tout fonctionne parfaitement. Maintenant, je peux également imprimer l'utilisation de la mémoire de chaque processus en kilo-octets (Ko).

Maintenant, il ne reste plus qu'à formater la sortie pour qu'elle soit belle. Je préfère le format tableau. La ligne 5 imprime l'en-tête de chaque colonne du tableau.

Enfin, j'ai imprimé PID , PROPRIÉTAIRE , MÉMOIRE (en Ko) et COMMANDER de chaque processus sous forme de tableau à l'aide de la ligne 14.

Comme vous pouvez le voir, cela fonctionne plutôt bien. Il y a un petit problème cependant, les processus ne sont pas correctement triés par ordre décroissant d'utilisation de la mémoire.

Pour résoudre ce problème, j'ai supprimé trier -bnr -k3 à partir de la ligne 3 et tout enveloppé dans une fonction shell sysmon_main() . Puis a laissé le travail de tri au sorte commander.

Le script shell final ressemble à ceci :

Comme vous pouvez le voir, cela fonctionne très bien.

Maintenant, vous pouvez le déplacer quelque part comme /usr/bin et exécutez-le comme les autres commandes comme suit :

$sudo mv -vsysmon/usr/un m

Exécution sysmon :

Merci d'avoir lu cet article.