Chcę uzyskać wykorzystanie procesora i pamięci przez pojedynczy proces w systemie Linux - znam PID. Mam nadzieję, że uda mi się go pobrać co sekundę i zapisać w pliku CSV za pomocą polecenia „obserwuj”. Jakiego polecenia mogę użyć, aby uzyskać te informacje z wiersza poleceń systemu Linux?
linux
shell
memory-management
cpu-usage
Supertux
źródło
źródło
Odpowiedzi:
(Możesz pominąć "cmd", ale może to być pomocne przy debugowaniu).
Zauważ, że daje to średnie użycie procesora przez proces w czasie, gdy był on uruchomiony.
źródło
| tail -n +2
ps
). To nie jest rzeczywiste użycie procesora w czasie. Może się też bardzo różnić od tegotop
, co na przykład pokazuje.ps -e -o pcpu,args
pokaże średnią cpu przez cały czas trwania procesu, co oczywiście nie jest tym, czego chcesz, jeśli jest to długotrwały procesWariant odpowiedzi kawiarni :
top -p <pid>
To automatycznie odświeża użycie procesora, więc jest dobre do monitorowania.
źródło
pgrep
:top -p $(pgrep process_name)
Możesz uzyskać wyniki według nazwy procesu za pomocą
-C
opcja pozwala na użycie nazwy procesu, nie wiedząc, że to PID.źródło
pid
Tylko @ArnoldRoa powinno działać.ps -C chrome -o pid,%cpu,%mem,cmd
Użyj pidstat (z sysstat - refer Link ).
np. do monitorowania tych dwóch identyfikatorów procesów (12345 i 11223) co 5 sekund użyj
źródło
pidstat
że to świetne polecenie, a także przydatne do tworzenia skryptów!pidstat
daje również niezłą średnią. szkoda tylko, że nie znalazłem bardziej eleganckiego sposobupidstat -u 1 10 | grep ^Average | sort -r -n -b -k 8,8
ps
polecenie (nie należy używać):top
polecenie (należy użyć):Służy
top
do sprawdzania użycia procesora w czasie rzeczywistym (bieżący krótki interwał):top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
będzie wyglądać jak:
78.6
-b
: Tryb wsadowy-n 2
: Liczba iteracji, użyj,2
ponieważ: Przy pierwszym uruchomieniu nie ma poprzedniej próbki do porównania, więc te początkowe wartości są procentami od rozruchu.-d 0.2
: Czas opóźnienia (w sekundach, tutaj jest 200 ms)-p 6962
: Monitor-PIDstail -1
: ostatni rządawk '{print $9}'
: kolumna 9 (numer użycia procesora)źródło
Uruchom program i monitoruj go
Ten formularz jest przydatny, jeśli chcesz łatwo przetestować plik wykonywalny:
Teraz po naciśnięciu Ctrl + C zamyka program i zatrzymuje monitorowanie. Przykładowe dane wyjściowe:
Powiązane: /unix/554/how-to-monitor-cpu-memory-usage-of-a-single-process
Testowane na Ubuntu 16.04.
źródło
Możesz użyć
top -b
i grepować pid, który chcesz (z-b
flagą top działa w trybie wsadowym) lub też użyć-p
flagi i określić pid bez używania grep.źródło
Jak skomentowano w powyższej odpowiedzi caf , ps, aw niektórych przypadkach pidstat poda średnią długość procesora pCPU przez cały okres użytkowania. Aby uzyskać dokładniejsze wyniki, użyj top. Jeśli chcesz biec na górze, gdy już możesz biegać:
lub tylko do przetwarzania danych i nagłówka:
bez nagłówków:
źródło
lub na proces
źródło
Aby uzyskać wykorzystanie pamięci tylko przez twoją aplikację (w przeciwieństwie do współdzielonych bibliotek, których używa, musisz użyć interfejsu smaps Linuksa). Ta odpowiedź dobrze to wyjaśnia .
źródło
gdzie pierwsza kolumna to PID, druga kolumna użycie procesora, trzecia kolumna użycie pamięci.
źródło
PID - identyfikator procesu
etime - Trwanie procesu / Czas trwania
% cpu - użycie procesora
% mem - użycie pamięci
cmd - Command
Zastąp nazwę procesu dowolnym procesem, który chcesz śledzić, mysql nginx php-fpm itp ...
źródło
Wszystkie odpowiedzi tutaj pokazują tylko procent pamięci dla PID.
Oto przykład, jak uzyskać użycie pamięci rss w KB dla wszystkich procesów Apache, zamień „grep apache” na „grep PID”, jeśli chcesz tylko oglądać określony PID:
To drukuje:
Z procesorem%:
Wynik:
źródło
Dla tych, którzy przez chwilę walczyli i zastanawiali się, dlaczego wybrana odpowiedź nie działa:
Brak PRZESTRZENI między
%cpu,
a%mem
.źródło
To fajna sztuczka do śledzenia jednego lub więcej programów w czasie rzeczywistym, jednocześnie obserwując wyjście innego narzędzia:
watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"
źródło
Następujące polecenie pobiera średnie użycie procesora i pamięci co 40 sekund dla określonego procesu (pid)
Dane wyjściowe dla mojego przypadku (pierwsze dwa wiersze dotyczące wykorzystania procesora, drugie dwa wiersze pamięci):
źródło
(Jeśli używasz systemu MacOS 10.10, wypróbuj opcję kumulatywną -c top:
(Ta opcja nie jest dostępna w innych systemach Linux, wypróbowana z Scientific Linux el6 i RHEL6)
źródło
Powyższa lista zawiera najważniejsze procesy pochłaniające procesor i pamięć
źródło
Opierając się na odpowiedzi @ caf, to działa dobrze dla mnie.
Oblicz średnią dla danego PID:
Measure.sh
Stosowanie:
źródło
Wykorzystanie procesora i pamięci przez pojedynczy proces w systemie Linux lub możesz uzyskać 10 najczęściej wykorzystywanych procesów przez procesor, używając poniższego polecenia
ps -aux --sort -pcpu | głowa -n 11
źródło