Odpowiedzi:
1
od tego, ponieważ wypisuje wiersz podobny USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
do nagłówka tabeli.
Aby uzyskać liczbę wątków dla danego pidu:
$ ps -o nlwp <pid>
Gdzie nlwp
oznacza liczbę lekkich procesów (wątków) . Stąd ps
aliasy nlwp
do thcount
, co oznacza, że
$ ps -o thcount <pid>
działa również.
Jeśli chcesz monitorować liczbę wątków, po prostu użyj watch
:
$ watch ps -o thcount <pid>
Aby uzyskać sumę wszystkich wątków uruchomionych w systemie:
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
watch
polecenie. Należy jednak pamiętać, że używanie thcount
może się nie powieść dla niektórych (Red Hat ...), chociaż nlwp
działało dla mnie.
Każdy wątek w procesie tworzy katalog pod /proc/<pid>/task
. Policz liczbę katalogów, a masz liczbę wątków.
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l
. Po prostu zastąp <PID> swoim identyfikatorem procesu, który możesz uzyskać od top
lub za pomocąps
ps -eLf
w powłoce wyświetli listę wszystkich wątków i procesów aktualnie działających w systemie. Lub możesz uruchomić top
polecenie, a następnie nacisnąć `` H '', aby przełączyć listę wątków.
-p
razie potrzeby łatwo jest dodać do tego znak lub cokolwiek innego. To minimum potrzebne do wyświetlenia listy wątków.
JStack jest dość niedrogi - jedną z opcji byłoby przepuszczenie wyjścia przez grep w celu znalezienia aktywnych wątków, a następnie potokowanie przez wc -l.
Bardziej graficznie jest JConsole, który wyświetla liczbę wątków dla danego procesu.
Jeśli użyjesz:
ps uH p <PID_OF_U_PROCESS> | wc -l
Musisz odjąć 1 do wyniku, ponieważ jeden z liczonych wierszy "wc" to nagłówki polecenia "ps".
ps
jako jednego z wątków.
$ ps H p pid-id
H - wyświetla listę wszystkich pojedynczych wątków w procesie
lub
$cat /proc/pid-id/status
pid-id to identyfikator procesu
np. (obcięto poniższe dane wyjściowe)
root@abc:~# cat /proc/8443/status
Name: abcdd
State: S (sleeping)
Tgid: 8443
VmSwap: 0 kB
Threads: 4
SigQ: 0/256556
SigPnd: 0000000000000000
Najłatwiejszym sposobem jest użycie "htop". Możesz zainstalować "htop" (bardziej wyszukaną wersję topu), który pokaże ci wszystkie rdzenie, proces i zużycie pamięci.
Naciśnij „Shift + H”, aby wyświetlić cały proces lub naciśnij ponownie, aby go ukryć. Naciśnij klawisz "F4", aby wyszukać nazwę procesu.
Instalacja w systemie Ubuntu lub Debian:
sudo apt-get install htop
Instalowanie na Redhat lub CentOS:
yum install htop
dnf install htop [On Fedora 22+ releases]
Jeśli chcesz skompilować "htop" z kodu źródłowego, znajdziesz go tutaj .
Jeśli próbujesz znaleźć liczbę wątków wykorzystujących procesor dla danego pidu, użyłbym:
top -bc -H -n2 -p <pid> | awk '{if ($9 != "0.0" && $1 ~ /^[0-9]+$/) print $1 }' | sort -u | wc -l
Jeśli interesują Cię te wątki, które są naprawdę aktywne - na przykład podczas robienia czegoś (nie blokowane, nie w oczekiwaniu na czas, nie zgłaszające „uruchomionego wątku”, ale naprawdę czekające na przekazanie danych przez strumień), w przeciwieństwie do siedzenia w bezczynności, ale na żywo - - wtedy możesz być zainteresowany jstack-active .
Ten prosty skrypt bash uruchamia się, jstack
a następnie odfiltrowuje wszystkie wątki, które według heurystyki wydają się być bezczynne, pokazując ślady stosu dla tych wątków, które w rzeczywistości zużywają cykle procesora.
Jeśli chcesz liczbę wątków na użytkownika w systemie linux, powinieneś użyć:
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
gdzie jak użyć żądanej nazwy użytkownika.