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에서는 작동하지 않습니다 .
ps
와pid
사용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
ps
와filter
사용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같은 결과가 발생합니다.
답변4
프로세스 정보를 표시하는 두 가지 표준 도구는 ps
및 top
( htop
와 유사 /향상).
노트:
- 많은 프로그램이 스레드의 겉보기 이름을 의미 있는 이름으로 변경합니다. 아래 도구는 바이너리 이름이나 겉보기 이름을 표시할 수 있습니다(아래 예에서 PID 1086 확인).
- 아래 예에서는 답변을 짧게 유지하기 위해 대부분의 프로세스를 제거했습니다.
- 다음 명령 매개변수 예는 일반적입니다. 대체 옵션(,,
ps -m
...) 은 맨페이지를 확인하세요.ps m
ps 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