[linux] 리눅스에서 프로세스의 스레드 수를 어떻게 모니터링 할 수 있습니까?

Linux에서 특정 프로세스가 사용하는 스레드 수를 모니터링하고 싶습니다. 프로세스 성능에 영향을주지 않고이 정보를 쉽게 얻을 수있는 방법이 있습니까?



답변

시험

ps huH p <PID_OF_U_PROCESS> | wc -l

또는 멈춤


답변

주어진 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쉘에서 현재 시스템에서 실행중인 모든 스레드와 프로세스의 목록을 제공해야합니다. 또는 topcommand를 실행 한 다음 ‘H’를 눌러 스레드 목록을 토글 할 수 있습니다 .


답변

JStack은 매우 저렴합니다. 하나의 옵션은 grep을 통해 출력을 파이프하여 활성 스레드를 찾은 다음 wc -l을 통해 파이프하는 것입니다.

보다 그래픽 적으로 주어진 프로세스의 스레드 수를 표시하는 JConsole이 있습니다.


답변

사용하는 경우 :

ps uH p <PID_OF_U_PROCESS> | wc -l

“wc”행 중 하나가 counting “ps”명령의 헤더이므로 결과에서 1을 빼야합니다.