답변:
1
와 같은 줄을 인쇄하기 때문에 빼야한다고 생각합니다 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
.
주어진 pid에 대한 스레드 수를 얻으려면 :
$ ps -o nlwp <pid>
어디 nlwp
를위한 스탠드 경량의 수 (스레드)를 처리합니다 . 따라서 ps
별칭 nlwp
으로 thcount
하는 수단,
$ ps -o thcount <pid>
작동합니다.
스레드 수를 모니터링하려면 watch
다음을 사용하십시오 .
$ watch ps -o thcount <pid>
시스템에서 실행중인 모든 스레드의 합계를 얻으려면 다음을 수행하십시오.
$ ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
watch
명령. 그러나 thcount
일부 (Red Hat ...)에는 사용 이 실패 할 수 있지만 참고 nlwp
하십시오.
프로세스의 각 스레드는 아래에 디렉토리를 만듭니다 /proc/<pid>/task
. 디렉토리 수를 세면 스레드 수가 있습니다.
find /proc/<PID>/task -maxdepth 1 -type d -print | wc -l
.. <PID> 를 얻을 수 top
있거나 사용할 수있는 프로세스 ID로 바꾸십시오ps
ps -eLf
쉘에서 현재 시스템에서 실행중인 모든 스레드와 프로세스의 목록을 제공해야합니다. 또는 top
command를 실행 한 다음 'H'를 눌러 스레드 목록을 토글 할 수 있습니다 .
-p
필요한 경우 다른 항목을 쉽게 추가 할 수 있습니다. 스레드 목록을 보는 데 필요한 최소값입니다.
사용하는 경우 :
ps uH p <PID_OF_U_PROCESS> | wc -l
"wc"행 중 하나가 counting "ps"명령의 헤더이므로 결과에서 1을 빼야합니다.
ps
스레드 중 하나로 계산해서는 안됩니다 .
jvmtop 은 다른 메트릭 외에도 현재 jvm 스레드 수를 표시 할 수 있습니다.
가장 쉬운 방법은 "htop"을 사용하는 것입니다. 모든 코어, 프로세스 및 메모리 사용량을 보여주는 "htop"(보다 멋진 버전의 top)을 설치할 수 있습니다.
"Shift + H"를 눌러 모든 프로세스를 표시하거나 다시 눌러 숨 깁니다. 프로세스 이름을 검색하려면 "F4"키를 누르십시오.
우분투 또는 데비안에 설치하기 :
sudo apt-get install htop
Redhat 또는 CentOS에 설치 :
yum install htop
dnf install htop [On Fedora 22+ releases]
유휴 상태이지만 라이브 상태로 앉아있는 것과는 반대로 (블로킹되지 않고, timed_waiting하지 않고 "스레드 실행"을보고하지 않고 실제로 데이터를 제공하기를 기다리는) 스레드와 같이 실제로 활성 인 스레드에 관심이 있다면 - -jstack-active에 관심이있을 수 있습니다. .
이 간단한 bash 스크립트가 실행 jstack
되면 휴리스틱에 의해 유휴 상태 인 것처럼 보이는 모든 스레드를 필터링하여 실제로 CPU 사이클을 소비하는 스레드에 대한 스택 추적을 표시합니다.
리눅스 시스템에서 사용자 당 스레드 수를 원한다면 다음을 사용해야합니다.
ps -eLf | grep <USER> | awk '{ num += $6 } END { print num }'
원하는 사용자 이름을 사용하십시오.