Come monitorare la memoria consumata da un processo?


16

Ho un processo che mi piacerebbe vedere quanta memoria consuma mentre è in esecuzione.

In questo momento faccio questo:

ps faux | grep casper

Ma questo mi dà solo le informazioni di quel momento. Sarebbe bello vedere quel valore cambiare mentre procede lo script.

In che modo posso farlo?

Risposte:


15

Metodo 1

Correre:

top

Verifica il PID del programma (prima colonna), quindi esegui:

top -p PID

Metodo 2

O incollalo nel terminale o salvalo come mem_usage.sh ed eseguilo dal terminale.

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done

1
Come puoi cambiarlo mostrando%? Per interesse :-)
Wilf,

Ottengo questo quando eseguo lo script: bash: ./memory_usage.sh: bin / bash: cattivo interprete: nessun file o directory
simile

Bah! L'ho modificato! Dovrebbe averlo verificato correttamente prima di pubblicare. La prima riga dovrebbe dire dove eseguirlo da / bin / bash (avevo bin / bash quindi stava controllando localmente in una cartella chiamata bin per bash)
Julian Stirling

1
@ wilf ps faux | grep casper | awk '{print $ 11} {print $ 6}' Questo dovrebbe darti su una riga il nome del programma e la successiva la dimensione della memoria reale in kB.
Julian Stirling,

6

Per monitorare solo il tuo processo puoi controllare / proc / PID / status o / proc / PID / statm.

Informazioni su / proc / PID / statm:

Dopo averlo fatto cat /proc/PID/statmdovresti vedere questo:

611450 185001 883 18 0 593431 0

Spiegazione :

  1. dimensione: - dimensione totale del programma (611450 X 4096/1024 = 2445800kB = 2388M)
  2. residente: - dimensione set residente (185001 X 4096/1024 = 740004kB = 722M)
  3. condividi: - pagine condivise (883 X 4096 = 3532)
  4. trs: - testo (codice) (18 X 4096/1024 = 72kB = VmExe)
  5. drs: - data / stack
  6. lrs: - libreria (593431 X 4096/1024 = 2373724kB = VmData + VmStk)
  7. dt: - pagine sporche

Inoltre puoi registrare l'attività di memoria per il tuo processo facendo un ciclo usando date e cat.


4

potresti usare usa 'top'

man top

Questo programma consente di ordinare l'utilizzo delle risorse, tra l'altro, RSS, VSZ, CPU, ecc. È molto utile.

In alternativa, per una suddivisione più dettagliata dell'utilizzo della memoria, prova "pmap"

man pmap

Esempio di utilizzo:

pmap -x 1234

Saluti

sc.


1
Con pmap -x PID, intendevi un uso incredibilmente dettagliato :-)
Wilf,

infatti - non può mai avere abbastanza dettagli :)
swisscheese il

1
Sul mio (Ubuntu 16.04.5 LTS) "pmap -x" con il PID non mostra altro che il PID e il comando. -X fa lo stesso.
or

2

Apri System Monitor e vai alla Processesscheda:


1

Prova a:

watch 'ps faux | grep -v grep | grep casper'

È inoltre possibile modificare l'intervallo di aggiornamento utilizzando il --interval <seconds>parametro.


1
Non hai bisogno di -v grep se cambi l'ultimo in grep [c] asper. Ciò corrisponde a casper ma non a se stesso.
Wudang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.