it-swarm.it

Come trovare quali processi stanno occupando tutta la memoria?

Sto cercando qualcosa di simile all'utilizzo della CPU. C'è un argomento da riga di comando per top che lo fa? Attualmente, la mia memoria è così piena che anche "man top" fallisce senza memoria :)

87
ripper234

Dall'interno di top puoi provare quanto segue:

  • Stampa SHIFT+f
  • Premere la lettera corrispondente a% MEM
  • Stampa ENTER

Potresti anche provare:

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

Ciò fornirà i primi 5 processi in base all'uso della memoria.

107
Steven D

Se lo hai installato, mi piace htop una volta avviato, puoi premere f6down arrow (per MEM%), enter per ordinare in base alla memoria.

11
xenoterracide

Una volta avviato top, premere F per passare alla schermata del campo di ordinamento. Scegli uno dei campi elencati premendo il tasto elencato a sinistra; probabilmente vuoi N per MEM%

7
Michael Mrozek

In Solaris il comando di cui hai bisogno è:

prstat -a -s size

Questo elencherà tutti i processi in ordine decrescente di dimensione dell'immagine del processo. Si noti che quest'ultimo si basa sulla memoria impegnata nel processo dal sistema operativo, non sull'utilizzo della memoria fisica residente.

Presumibilmente ci sono versioni di "top" disponibili per Solaris, ma non fanno parte dell'installazione standard.

6
Joel Hoff

Una bella alternativa a top è htop. Controllalo, è molto più facile da usare rispetto al normale.

5
Klark

Può essere realizzato in più modi, il mio preferito è:

The PS way:

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

    Dove,

    • -e: per selezionare tutto il processo
    • -o: da applicare al formato di output
    • pid, cmd, %cpu, %mem: Formato di output nell'ordine esatto. Qui è possibile utilizzare pcpu e pmem anziché %cpu e %mem.
    • Ma purtroppo (non so perché) non funziona su alcune macchine (Oracle Linux) e alcune macchine più vecchie. È possibile utilizzare le seguenti alternative simili.
  2. [[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rss

    Dove,

    • -rss: dimensione del set di residenti, la memoria fisica non scambiata utilizzata da un'attività
  3. [[email protected] ~]$ ps --cols 120 aux --sort -rss

    Dove,

    • --cols 100: per specificare la larghezza della colonna dell'output poiché a volte cmd diventa molto lungo. Ciò non è necessario se non si desidera che i comandi vengano ridotti con argomenti.
    • aux: per vedere tutti i processi sul sistema usando la sintassi BSD

Il modo migliore:

[[email protected] ~]$ top -b -o +%MEM

Dove,

  • -b: per utilizzare top come modalità batch.
  • -o: sovrascrive l'ordinamento nome campo seguito da un nome campo %MEM

E puoi sempre usare head e/o tail per controllare l'output.

1
muhammad

Questo comando identificherà i principali processi che consumano memoria:

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

Globalmente: Si consiglia sempre di utilizzare uno strumento di analisi dei log per la registrazione dei log della cronologia come Splunk, ELK ecc. In questo modo, utilizzando il linguaggio delle query è possibile ottenere facilmente i PID e il suo utilizzo da parte della CPU e della memoria.

A LIVELLO SERVER/OS: Dall'interno in alto puoi provare quanto segue:

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

Potresti anche provare:

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

Ciò fornirà i primi 10 processi in base all'uso della memoria. Inoltre è possibile utilizzare l'utilità vmstat per trovare l'uso RAM allo stesso tempo non per la cronologia.

0
Santosh Garole

Puoi provare ps aux --sort -rss | head o ps aux | sort -nk +4 | tail

0
David Okwii