web-dev-qa-db-fra.com

Comment trouver quels processus prennent toute la mémoire?

Je cherche quelque chose comme top est à l'utilisation du CPU. Y a-t-il un argument de ligne de commande pour top qui fait cela? Actuellement, ma mémoire est si pleine que même 'man top' échoue sans mémoire :)

87
ripper234

De l'intérieur top, vous pouvez essayer ce qui suit:

  • Presse SHIFT+f
  • Appuyez sur la lettre correspondant à% MEM
  • Presse ENTER

Vous pouvez également essayer:

$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

Cela donnera les 5 premiers processus en fonction de l'utilisation de la mémoire.

107
Steven D

Si vous l'avez installé, j'aime htop une fois lancé, vous pouvez appuyer sur f6down arrow (à MEM%), enter trier par mémoire.

11
xenoterracide

Une fois que top démarre, appuyez sur F pour passer à l'écran du champ de tri. Choisissez l'un des champs répertoriés en appuyant sur la touche indiquée à gauche; tu veux probablement N pour MEM%

7
Michael Mrozek

Dans Solaris, la commande dont vous auriez besoin est:

prstat -a -s size

Cela répertoriera tous les processus par ordre décroissant de taille d'image de processus. Notez que ce dernier est basé sur la mémoire dédiée au processus par le système d'exploitation, et non sur l'utilisation de sa mémoire physique résidente.

Il existe supposément des versions de "top" disponibles pour Solaris, mais elles ne font pas partie de l'installation standard.

6
Joel Hoff

Une bonne alternative à top est htop. Vérifiez-le, il est beaucoup plus convivial que le top ordinaire.

5
Klark

Cela peut être réalisé de plusieurs façons, mon préféré est:

La manière PS:

  1. [arif@arif ~]$ ps -eo pid,cmd,%cpu,%mem --sort=-%mem

    Où,

    • -e: pour sélectionner tous les processus
    • -o: à appliquer au format de sortie
    • pid, cmd, %cpu, %mem: Format de sortie dans l'ordre exact. Ici, pcpu et pmem peuvent être utilisés à la place de %cpu et %mem.
    • Mais malheureusement (je ne sais pas pourquoi) cela ne fonctionne pas sur une machine (Oracle Linux) et une machine plus ancienne. Vous pouvez utiliser les alternatives similaires suivantes.
  2. [arif@arif ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Où,

    • -rss: taille de l'ensemble résident, la mémoire physique non permutée utilisée par une tâche
  3. [arif@arif ~]$ ps --cols 120 aux --sort -rss

    Où,

    • --cols 100: pour spécifier la largeur de colonne de la sortie car parfois cmd devient très long. Cela n'est pas nécessaire si vous ne voulez pas de commandes raccourcies avec des arguments.
    • aux: pour voir tous les processus du système en utilisant la syntaxe BSD

La meilleure façon:

[arif@arif ~]$ top -b -o +%MEM

Où,

  • -b: pour utiliser top comme batch mode.
  • -o: pour remplacer le nom de champ de tri suivi d'un nom de champ %MEM

Et vous pouvez toujours utiliser head et/ou tail pour contrôler la sortie.

1
muhammad

Cette commande identifiera les principaux processus consommant de la mémoire:

ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
1
user90191

Globalement: Il est toujours recommandé d'utiliser un outil d'analyseur de journal pour la journalisation des journaux d'historique tels que Splunk, ELK etc. Afin que l'utilisation du langage de requête vous pouvez facilement obtenir les PID et leur utilisation par CPU et mémoire.

AU NIVEAU SERVEUR/OS: De l'intérieur en haut, vous pouvez essayer ce qui suit:

 Press SHIFT+M  ---> This will give you a process which takes more memory in descending order.

Vous pouvez également essayer:

$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10

Cela donnera le top 10 des processus en fonction de l'utilisation de la mémoire. Vous pouvez également utiliser l'utilitaire vmstat pour trouver l'utilisation RAM en même temps, pas pour l'historique.

0
Santosh Garole

Tu peux essayer ps aux --sort -rss | head ou ps aux | sort -nk +4 | tail

0
David Okwii