web-dev-qa-db-fra.com

Comment utiliser la mémoire (RAM utilisée) à l'aide de la commande Linux?

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.

32
codelogn

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émoire
  • used mémoire
  • free mémoire
  • utilisation de shared
  • utilisation de buffers
  • caches du système de fichiers d'utilisation (cached)

Dans cette ligne usedinclut 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
35
casey

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

  • 7869 Indique mémoire/physique RAM disponible pour ma machine.
  • 4402 Indique la mémoire/RAM utilisée par mon système.
  • 3466 Indique le total RAM gratuit et disponible pour un nouveau processus à exécuter.
  • 0 Indique la mémoire partagée. Cette colonne est obsolète et pourrait être supprimée dans les futures versions de free.
  • 208 Indique le total RAM tamponné par différentes applications sous Linux.
  • 3497 Indique le total RAM utilisé pour la mise en cache des données à des fins futures.

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.

10
Ramesh

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%
6
Simply_Me
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

2
Andy

Pour jusqu'à CentOS 7, vous pouvez essayer

cat /proc/meminfo 

pour voir l'utilisation réelle de la mémoire par les processus.

1
Cosmo Arun