Jak monitorować pamięć zużywaną przez proces?

16

Mam proces, który chciałbym zobaczyć, ile pamięci zużywa podczas działania.

Teraz robię to:

ps faux | grep casper

Ale to tylko daje mi informację o tym momencie. Byłoby miło widzieć zmianę tej wartości w miarę wykonywania skryptu.

W jakiś sposób mogę to zrobić?

Hommer Smith
źródło

Odpowiedzi:

15

Metoda 1

Biegać:

top

Sprawdź PID programu (pierwsza kolumna), a następnie uruchom:

top -p PID

Metoda 2

Wklej to do terminala lub zapisz jako mem_usage.sh i uruchom z terminala.

#! /bin/bash
while :
do
    clear
    ps faux | grep casper
    sleep 1s
done
Julian Stirling
źródło
1
Jak możesz to zmienić, pokazując%? Zainteresowanie :-)
Wilf,
Pojawia się to podczas uruchamiania skryptu: bash: ./memory_usage.sh: bin / bash: zły interpreter: Brak takiego pliku lub katalogu
Hommer Smith
Bah! Zredagowałem to! Powinien był to sprawdzić poprawnie przed opublikowaniem. Pierwszy wiersz powinien zawierać informację o tym, gdzie go uruchomić z / bin / bash (miałem bin / bash, więc sprawdzał się lokalnie w folderze o nazwie bin do bash)
Julian Stirling
1
@ wilf ps faux | grep casper | awk '{print 11 $} {print 6 $}' To powinno dać ci w jednym wierszu nazwę programu, a następnie prawdziwy rozmiar pamięci w kB.
Julian Stirling,
7

Aby monitorować tylko twój proces, możesz sprawdzić / proc / PID / status lub / proc / PID / statm.

Informacje o / proc / PID / statm:

Po wykonaniu cat /proc/PID/statmtej czynności powinieneś zobaczyć:

611450 185001 883 18 0 593431 0

Objaśnienie:

  1. rozmiar: - całkowity rozmiar programu (611450 X 4096/1024 = 2445800kB = 2388M)
  2. rezydent: - rozmiar zestawu rezydenta (185001 X 4096/1024 = 740004kB = 722M)
  3. udostępnij: - udostępnione strony (883 X 4096 = 3532)
  4. trs: - tekst (kod) (18 X 4096/1024 = 72kB = VmExe)
  5. drs: - dane / stos
  6. lrs: - biblioteka (593431 X 4096/1024 = 2373724kB = VmData + VmStk)
  7. dt: - brudne strony

Możesz także rejestrować aktywność pamięci dla procesu wykonującego pętlę z użyciem date i cat.

yilmi
źródło
4

możesz użyć „top”

man top

Ten program pozwala sortować zużycie zasobów według, między innymi, RSS, VSZ, CPU itp. Jest to bardzo przydatne.

Alternatywnie, aby uzyskać bardziej szczegółowy podział użycia pamięci, spróbuj „pmap”

man pmap

Przykładowe użycie:

pmap -x 1234

Twoje zdrowie

sc.

ser szwajcarski
źródło
1
Z pmap -x PID, czy miałeś na myśli niewiarygodnie szczegółowe użycie :-)
Wilf,
w rzeczy
samej
1
Na moim (Ubuntu 16.04.5 LTS) „pmap -x” z PID nie pokazuje nic oprócz PID i polecenia. -X robi to samo.
orrd
2

Otwórz Monitor systemu i przejdź do Processeszakładki:

Wilf
źródło
1

Spróbuj:

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

Możesz także zmienić interwał odświeżania za pomocą --interval <seconds>parametru.

Martin Dvorak
źródło
1
Nie potrzebujesz -v grep, jeśli zmienisz ostatni na grep [c] asper. To pasuje do Caspera, ale nie do siebie.
Wudang