Linux에서 특정 프로세스가 사용하는 스레드 수를 모니터링하고 싶습니다. 프로세스 성능에 영향을주지 않고이 정보를 쉽게 얻을 수있는 방법이 있습니까?
답변
답변
주어진 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 }'
답변
프로세스의 각 스레드는 아래에 디렉토리를 만듭니다 /proc/<pid>/task
. 디렉토리 수를 세면 스레드 수가 있습니다.
답변
cat /proc/<PROCESS_PID>/status | grep Threads
답변
ps -eLf
쉘에서 현재 시스템에서 실행중인 모든 스레드와 프로세스의 목록을 제공해야합니다. 또는 top
command를 실행 한 다음 ‘H’를 눌러 스레드 목록을 토글 할 수 있습니다 .
답변
JStack은 매우 저렴합니다. 하나의 옵션은 grep을 통해 출력을 파이프하여 활성 스레드를 찾은 다음 wc -l을 통해 파이프하는 것입니다.
보다 그래픽 적으로 주어진 프로세스의 스레드 수를 표시하는 JConsole이 있습니다.
답변
사용하는 경우 :
ps uH p <PID_OF_U_PROCESS> | wc -l
“wc”행 중 하나가 counting “ps”명령의 헤더이므로 결과에서 1을 빼야합니다.