J'essaie de récupérer la mémoire utilisée (RAM) en pourcentage à l'aide des commandes Linux. Mon écran affiche Mémoire utilisée que je dois afficher sur une page Web particulière.
Sur les forums, j'ai découvert qu'une mémoire correcte peut être trouvée à partir des éléments suivants:
free -m
Résultat:
-/+ buffers/cache: 492 1555
-/+ buffers/cache: contient l'utilisation correcte de la mémoire. Je ne sais pas comment analyser ces informations ou s'il existe une commande différente pour obtenir la mémoire utilisée en pourcentage.
Voici un exemple de sortie de free:
% free
total used free shared buffers cached
Mem: 24683904 20746840 3937064 254920 1072508 13894892
-/+ buffers/cache: 5779440 18904464
Swap: 4194236 136 4194100
La première ligne de chiffres (Mem:
) listes
total
mémoireused
mémoirefree
mémoireshared
buffers
cached
)Dans cette ligne used
inclut les tampons et le cache et cela a un impact gratuit. Ce n'est pas votre "vraie" mémoire libre car le système va vider le cache si nécessaire pour satisfaire les demandes d'allocation.
La ligne suivante (-/+ buffers/cache:
) nous donne la mémoire réellement utilisée et libre comme s'il n'y avait pas de tampons ou de cache.
La dernière ligne (Swap
) donne l'utilisation de la mémoire d'échange. Il n'y a pas de tampon ou de cache pour le swap car cela n'aurait aucun sens de mettre ces choses sur un disque physique.
Pour sortir la mémoire utilisée (tampons moins et cache), vous pouvez utiliser une commande comme:
% free | awk 'FNR == 3 {print $3/($3+$4)*100}'
23.8521
Cela saisit la troisième ligne et divise utilisé/total * 100.
Et pour une mémoire libre:
% free | awk 'FNR == 3 {print $4/($3+$4)*100}'
76.0657
Je vais mentionner comment analyser les informations sur la commande free
. Pour trouver le pourcentage, vous pouvez utiliser comme suggéré dans les 2 autres réponses.
Ceci est clairement expliqué ici . J'essaierais d'expliquer à partir de ce que j'ai dans mon système.
free -m
total used free shared buffers cached
Mem: 7869 4402 3466 0 208 3497
-/+ buffers/cache: 696 7173
Swap: 3999 216 3783
Voyons maintenant ce que représentent réellement les différents nombres.
Ligne1
Ligne2
-/+ buffers/cache: 696 7173
Comment calculer les valeurs 696 et 7173 obtenues dans Line2?
Total utilisé ( 4402) - RAM totale du tampon ( 208) - Total RAM pour la mise en cache (= 3497) devrait constituer la RAM réellement utilisée dans le système. Il me renvoie 697 qui est la sortie réelle RAM utilisée sur la deuxième ligne.
Maintenant, Total disponible ( 7869) - Réel utilisé ( 696) devrait vous donner la mémoire libre qui est 7173 dans ce cas qui est également obtenu en sortie sur la deuxième ligne.
Bien qu'un en double comme l'a souligné @szboardstretcher, ma préférence parmi les solutions (dans la question d'origine) est celle ci-dessous, d'autant plus que vous souhaitez analyser une page Web.
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
Production:
used: 82.68%, buffers: 42.81%, swap: 1.27%
free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%\n"), $3/$2*100}'
Ajoute une nouvelle ligne après le numéro d'échange
Pour jusqu'à CentOS 7, vous pouvez essayer
cat /proc/meminfo
pour voir l'utilisation réelle de la mémoire par les processus.