Linux에서 프로세스가 소유한 모든 스레드의 세부 정보를 볼 수 있는 방법이 있습니까?

Linux에서 프로세스가 소유한 모든 스레드의 세부 정보를 볼 수 있는 방법이 있습니까?

Windows의 경우 제 생각에는프로세스 브라우저프로세스 아래의 모든 스레드를 표시합니다.

특정 프로세스에 의해 생성되는 모든 스레드에 대한 자세한 정보를 표시할 수 있는 유사한 Linux용 명령줄 유틸리티가 있습니까?


나 자신을 좀 더 명확하게 해야 한다고 생각해요.프로세스 계층 구조를 보는 대신 특정 프로세스에서 생성된 모든 스레드 목록을 보고 싶습니다.

이 스크린샷을 보세요

대체 텍스트

Linux에서 이를 달성하는 방법은 무엇입니까?감사해요!

답변1

클래식 도구는 top기본적으로 프로세스를 표시하지만 스레드는 H키 입력이나 -H명령줄 옵션을 통해 표시될 수 있습니다. 게다가맨 위, 와 유사 top하지만 스크롤 및 색상이 있으며 기본적으로 모든 스레드를 표시합니다(그러나 끌 수 있음). ps스레드를 표시하는 몇 가지 옵션도 있습니다. 특히 H-L.

스레드에 대한 정보를 표시할 수 있는 GUI 도구도 있습니다.대기열 수(간단한 GUI 래퍼 ps) 또는콘키(수많은 구성 옵션을 갖춘 시스템 모니터)

/proc/12345각 프로세스에 대해 12345프로세스 ID에서 많은 정보를 얻을 수 있습니다. 커널 스레드 ID가 있는 /proc/12345/task/67890곳에서 각 스레드에 대한 정보를 사용할 수 있습니다 . 67890여기 에서 ps, top및 기타 도구가 정보를 가져옵니다.

답변2

Linux에서 스레드 나열

현재 사용 가능한 답변

여기에 있는 모든 답변은 프로세스와 관련된 모든 스레드 목록이며, htop기본적으로 프로세스뿐만 아니라 시스템의 모든 스레드를 나열하므로 명확하지 않을 수 있는 사용자가 지정한 내용을 정확하게 제공한다는 점을 명확히 하고 싶습니다. top -H -p <pid>다음과 같이 더 잘 작동합니다.

top - 00:03:29 up 3 days, 14:49,  5 users,  load average: 0.76, 0.33, 0.18
Tasks:  18 total,   0 running,  18 sleeping,   0 stopped,   0 zombie
Cpu(s): 22.6%us,  5.7%sy,  4.2%ni, 66.2%id,  0.8%wa,  0.5%hi,  0.1%si,  0.0%st
Mem:   2063948k total,  1937744k used,   126204k free,   528256k buffers
Swap:  1052220k total,    11628k used,  1040592k free,   539684k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
30170 daniel    20   0  371m 140m 107m S 10.0  7.0   0:31.37 source:src
30066 daniel   -90   0  371m 140m 107m S  2.0  7.0   0:07.87 clementine
30046 daniel    20   0  371m 140m 107m S  0.0  7.0   0:32.05 clementine
30049 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.03 clementine
30050 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.31 clementine
30051 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30052 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30053 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30054 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.03 clementine
30055 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30056 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30057 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.04 clementine
30058 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30060 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.16 clementine
30061 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30062 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30064 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine
30065 daniel    20   0  371m 140m 107m S  0.0  7.0   0:00.00 clementine

참고로 이 스레드는 -90실제로 실시간 스레드입니다.

하지만

실제 CLI인 또 다른 옵션이 있습니다 ps. 프로세스 ID( pid)를 하나 application name이상 찾을지 여부에 따라 다릅니다 filters.

-T매개변수의 의미가 다르고 스레드를 표시하는 다른 방법이 없기 때문에 MacOS 또는 BSD에서는 작동하지 않습니다 .

pspid

사용ps -T -p <pid>

  • -T모든 스레드 나열
  • -p프로세스 ID 지정

예는 다음과 같습니다.

$ ps -T -p 30046
  PID  SPID TTY          TIME CMD       # this is here for clarity
30046 30046 pts/2    00:00:17 clementine
30046 30049 pts/2    00:00:00 clementine
30046 30050 pts/2    00:00:00 clementine
30046 30051 pts/2    00:00:00 clementine
30046 30052 pts/2    00:00:00 clementine
30046 30053 pts/2    00:00:00 clementine
30046 30054 pts/2    00:00:00 clementine
30046 30055 pts/2    00:00:00 clementine
30046 30056 pts/2    00:00:00 clementine
30046 30057 pts/2    00:00:00 clementine
30046 30058 pts/2    00:00:00 clementine
30046 30060 pts/2    00:00:00 clementine
30046 30061 pts/2    00:00:00 clementine
30046 30062 pts/2    00:00:00 clementine
30046 30064 pts/2    00:00:00 clementine
30046 30065 pts/2    00:00:00 clementine
30046 30066 pts/2    00:00:03 clementine

ps그리고application name

사용ps -T -C <application name>

  • -T모든 스레드 나열
  • -C지정하다<application name>

예는 다음과 같습니다.

$ ps -e -T -C clementine
  PID  SPID TTY          TIME CMD       # this is here for clarity
30046 30046 pts/2    00:00:17 clementine
30046 30049 pts/2    00:00:00 clementine
30046 30050 pts/2    00:00:00 clementine
30046 30051 pts/2    00:00:00 clementine
30046 30052 pts/2    00:00:00 clementine
30046 30053 pts/2    00:00:00 clementine
30046 30054 pts/2    00:00:00 clementine
30046 30055 pts/2    00:00:00 clementine
30046 30056 pts/2    00:00:00 clementine
30046 30057 pts/2    00:00:00 clementine
30046 30058 pts/2    00:00:00 clementine
30046 30060 pts/2    00:00:00 clementine
30046 30061 pts/2    00:00:00 clementine
30046 30062 pts/2    00:00:00 clementine
30046 30064 pts/2    00:00:00 clementine
30046 30065 pts/2    00:00:00 clementine
30046 30066 pts/2    00:00:03 clementine

psfilter

사용ps -e -T | grep <filter>

  • -e모든 프로세스 표시
  • -T모든 스레드 나열
  • |출력을 다음 명령으로 파이프
  • grep이는 <filter>(이 경우 <application name>) 로 콘텐츠를 필터링합니다.

예는 다음과 같습니다.

$ ps -e -T | grep clementine
  PID  SPID TTY          TIME CMD       # this is here for clarity
30046 30046 pts/2    00:00:17 clementine
30046 30049 pts/2    00:00:00 clementine
30046 30050 pts/2    00:00:00 clementine
30046 30051 pts/2    00:00:00 clementine
30046 30052 pts/2    00:00:00 clementine
30046 30053 pts/2    00:00:00 clementine
30046 30054 pts/2    00:00:00 clementine
30046 30055 pts/2    00:00:00 clementine
30046 30056 pts/2    00:00:00 clementine
30046 30057 pts/2    00:00:00 clementine
30046 30058 pts/2    00:00:00 clementine
30046 30060 pts/2    00:00:00 clementine
30046 30061 pts/2    00:00:00 clementine
30046 30062 pts/2    00:00:00 clementine
30046 30064 pts/2    00:00:00 clementine
30046 30065 pts/2    00:00:00 clementine
30046 30066 pts/2    00:00:03 clementine

각 프로세스는 동일한 PID를 가지므로 동일한 프로세스에 있다는 것을 알 수 있습니다.

답변3

맨 위top의 curs 버전인 에는 각 프로세스의 모든 스레드를 트리 보기에 표시하는 표시 옵션이 있습니다. 시작 htop하고 누르면 다음과 F5같은 결과가 발생합니다.

htop 스크린샷

답변4

프로세스 정보를 표시하는 두 가지 표준 도구는 pstop( htop와 유사 /향상).

노트:

  • 많은 프로그램이 스레드의 겉보기 이름을 의미 있는 이름으로 변경합니다. 아래 도구는 바이너리 이름이나 겉보기 이름을 표시할 수 있습니다(아래 예에서 PID 1086 확인).
  • 아래 예에서는 답변을 짧게 유지하기 위해 대부분의 프로세스를 제거했습니다.
  • 다음 명령 매개변수 예는 일반적입니다. 대체 옵션(,, ps -m...) 은 맨페이지를 확인하세요.ps mps H

전체 또는 프로세스를 실시간으로 보려면 다음을 사용하세요.top -H

top - 16:24:42 up  3:49,  3 users,  load average: 0.23, 0.29, 0.31
Threads: 503 total,   2 running, 501 sleeping,   0 stopped,   0 zombie
%Cpu(s):  9.7 us,  1.6 sy,  0.0 ni, 88.5 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   3938668 total,  2148708 used,  1789960 free,   133524 buffers
KiB Swap:  3903484 total,        0 used,  3903484 free.   822904 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1054 root      20   0  258664   3524   2692 S  0.0  0.1   0:00.00 rsyslogd
 1086 root      20   0  258664   3524   2692 S  0.0  0.1   0:00.03 in:imuxsock
 1087 root      20   0  258664   3524   2692 S  0.0  0.1   0:00.00 in:imklog
 1090 root      20   0  258664   3524   2692 S  0.0  0.1   0:00.05 rs:main Q:Reg
 2452 fpiat     20   0   25292   7520   3580 S  0.0  0.2   0:00.69 bash         
 2495 fpiat     20   0   25088   6988   3256 S  0.0  0.2   0:00.05 bash

모든 프로세스와 스레드를 즉시 보려면 다음을 사용하십시오.ps -eLf

$ ps -eLf
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root      1054     1  1054  0    4 12:34 ?        00:00:00 /usr/sbin/rsyslogd -n
root      1054     1  1086  0    4 12:34 ?        00:00:00 /usr/sbin/rsyslogd -n
root      1054     1  1087  0    4 12:34 ?        00:00:00 /usr/sbin/rsyslogd -n
root      1054     1  1090  0    4 12:34 ?        00:00:00 /usr/sbin/rsyslogd -n
franklin  2452  2448  2452  0    1 12:35 pts/0    00:00:00 /bin/bash
franklin  2495  2448  2495  0    1 12:36 pts/1    00:00:00 /bin/bash

프로세스의 스레드 정보, 사용ps -T

ps -T -C rsyslogd
  PID  SPID TTY          TIME CMD
 1054  1054 ?        00:00:00 rsyslogd
 1054  1086 ?        00:00:00 in:imuxsock
 1054  1087 ?        00:00:00 in:imklog
 1054  1090 ?        00:00:00 rs:main Q:Reg

(참고: 프로세스를 선택하려면 -C command, 또는 임의의 옵션을 사용하십시오)-p PID

프로세스의 스레드 정보를 자세히 설명하고 사용자 정의를 사용하십시오.ps

$ ps -L -o pid,lwp,pri,nice,start,stat,bsdtime,cmd,comm  -C rsyslogd
  PID   LWP PRI  NI  STARTED STAT   TIME CMD                         COMMAND
 1054  1054  19   0 12:34:53 Ssl    0:00 /usr/sbin/rsyslogd -n       rsyslogd
 1054  1086  19   0 12:34:53 Ssl    0:00 /usr/sbin/rsyslogd -n       in:imuxsock
 1054  1087  19   0 12:34:53 Ssl    0:00 /usr/sbin/rsyslogd -n       in:imklog
 1054  1090  19   0 12:34:53 Ssl    0:00 /usr/sbin/rsyslogd -n       rs:main Q:Reg

관련 정보