W przypadku systemu Windows myślę, że Process Explorer pokazuje wszystkie wątki w procesie.
Czy istnieje podobne narzędzie wiersza poleceń dla Linuksa, które może pokazywać mi szczegóły dotyczące wszystkich wątków pojawiających się w danym procesie?
Myślę, że powinienem był wyrazić się lepiej. Nie chcę widzieć hierarchii procesu, ale listę wszystkich wątków spawnowanych przez dany proces
Zobacz ten zrzut ekranu
Jak można to osiągnąć w systemie Linux? Dzięki!
command-line
shell
process
Lazer
źródło
źródło
Odpowiedzi:
Klasyczne narzędzie
top
domyślnie pokazuje procesy, ale można nakazać im wyświetlanie wątków za pomocąH
naciśnięcia klawisza lub-H
opcji wiersza polecenia. Istnieje również htop , który jest podobny do,top
ale ma przewijanie i kolory; domyślnie pokazuje wszystkie wątki (ale można to wyłączyć).ps
ma również kilka opcji wyświetlania wątków, zwłaszczaH
i-L
.Istnieją również narzędzia GUI, które mogą wyświetlać informacje o wątkach, na przykład qps (proste opakowanie GUI
ps
) lub conky (monitor systemu z wieloma opcjami konfiguracji).Dla każdego procesu dostępnych jest wiele informacji o tym,
/proc/12345
gdzie12345
jest identyfikator procesu. Informacje o każdym wątku są dostępne w/proc/12345/task/67890
miejscu, w którym67890
znajduje się identyfikator wątku jądra. To tamps
,top
i inne narzędzia zdobywają informacje.źródło
htop
wydaje się nie pokazywać mi wątków. Wspominają oH
kluczu jako sposobie przełączania między pokazywaniem a ukrywaniem wątków, ale nadal działa jako klucz Pomoc ...h
aby uzyskać pomoc, wielkie litery,H
aby pokazać / ukryć wątki.Wyświetlanie wątków w systemie Linux
Obecne udzielają odpowiedzi
Chciałbym wyjaśnić, że każda odpowiedź tutaj zawiera dokładnie to, co podałeś, listę wszystkich wątków powiązanych z procesem, może to nie być oczywiste
htop
, ponieważ domyślnie zawiera listę wszystkich wątków w systemie, nie tylko proces, aletop -H -p <pid>
działa lepiej na przykład:Na marginesie, wątek z
-90
jest tak naprawdę wątkiem w czasie rzeczywistym.ale
Jest też inna opcja, która jest prawdziwym CLI
ps -e -T | grep <application name or pid>
-e
pokazuje wszystkie procesy-T
wyświetla wszystkie wątki|
przesyła dane wyjściowe do następnego poleceniagrep
to filtruje zawartośćOto przykład:
Każdy z nich ma ten sam PID, więc wiesz, że są w tym samym procesie.
źródło
sed
zamiast tegogrep
, możesz zachować tytuł za pomocą trywialnego kodu:ps -e -T | sed -n '1p; /clementine/p;'
htop , wersja curses programu top, ma opcję wyświetlania do wyświetlania wszystkich wątków dla każdego procesu w widoku drzewa. Uruchomienie
htop
i naciśnięcie F5spowoduje:źródło
Możesz spróbować użyć:
Na przykład:
Każdy wątek ma swój własny PID.
źródło
Dwa standardowe narzędzia do wyświetlania informacji o procesie to
ps
itop
(htop
które są podobne / ulepszone ).Uwagi:
ps -m
,ps m
,ps H
...)Widok wszystkich lub procesu w czasie rzeczywistym, przy użyciu
top -H
Natychmiastowy widok wszystkich procesów i wątków, za pomocą
ps -eLf
Wątki informacji o procesie przy użyciu
ps -T
(uwaga: użyj dowolnej opcji
-C command
lub,-p PID
aby wybrać proces)Szczegółowe informacje o wątkach procesu przy użyciu niestandardowego
ps
źródło
Można spróbować
top -H -p <pid>
.Należy jednak pamiętać, że w niektórych wersjach uniksowych opcja -H nie jest dostępna w
top
poleceniu.źródło
-H
; Linux używa narzędzi GNU (w tymps
), a UNIX nie. (Jest to oczywiście uogólnienie ...)Powinno to wyświetlać wątki jako procesy. Pamiętaj również, że wszystkie wątki wielowątkowe muszą mieć ten sam PID. Linux robi to, tworząc grupy wątków. Pierwszy wątek jest liderem grupy, a jego PID to tgid (identyfikator grupy wątków) grupy wątków.
Rzeczywisty PID i status wątków można znaleźć, korzystając z systemu plików / proc. Innym sposobem na osiągnięcie tego jest sprawdzenie PID za pomocą ps, a następnie uruchomienie następującego polecenia:
Następnie sprawdź kolejne pids / tgid wątków i uruchom następujące polecenie:
źródło
Spowoduje to wyświetlenie wątków powiązanych z twoim procesem (tj. Process_id) [Używany w Ubuntu. Istnieje możliwość, że opcja -H nie jest dostępna w niektórych wersjach linuksowych]
źródło
Powyższe polecenie pokazuje liczbę działających wątków dla konkretnego pid procesu, jeśli dla procesu Java
źródło
Szukałem tego samego i udało mi się wymyślić następujący skrypt bash:
To jest nadal w toku, zaktualizuję to, gdy poprawię skrypt.
Nie jestem ekspertem od unixa, jestem pewien, że jakiś ekspert może napisać go w 2 liniach, z lepszą jakością, ale moim celem jest zapewnienie działającego rozwiązania dla innych.
zaktualizuj o filtr i informacje o procesie
źródło