Wednesday, May 24, 2017

how to find number of threads in a process on linux ?

The proc pseudo file system, which resides in /proc directory, is the easiest way to see the thread count of any active process. The /proc directory exports in the form of readable text files a wealth of information related to existing processes and system hardware such as CPU, interrupts, memory, disk, etc.

cat /proc/<pid>/status
The proc pseudo file system, which resides in /proc directory, is the easiest way to see the thread count of any active process. The /proc directory exports in the form of readable text files a wealth of information related to existing processes and system hardware such as CPU, interrupts, memory, disk, etc.
Threads: <N>
For example Find the pid of the google chrome and find the each process using how many Threads.

root@linuxforfreshers.com:~# ps -ef | grep chrome
root      28168 20969  1 15:45 ?        00:00:17 /opt/google/chrome/chrome

Where 28168 is pid of google chrmoe.

Or

root@linuxforfreshers.com:~# pidof chrome
28168


Example :

root@linuxforfreshers.com:~# cat /proc/28168/status
Name: chrome
State:   S (sleeping)
Tgid:    28168
Ngid:    0
Pid:      28168
PPid:    20969
TracerPid:       0
Uid:      1000    1000    1000    1000
Gid:      1000    1000    1000    1000
FDSize: 256
Groups:            4 24 27 30 46 108 124 128 1000
NStgid: 28168  12008  1
NSpid:  28168  12008  1
NSpgid:            3938    0          0
NSsid:  3938    0          0
VmPeak:          1087572 kB
VmSize:           1028908 kB
VmLck:                   0 kB
VmPin:        0 kB
VmHWM:          311332 kB
VmRSS:              212288 kB
VmData:            606664 kB
VmStk:      136 kB
VmExe:              109204 kB
VmLib:    45784 kB
VmPTE:                1676 kB
VmPMD:               620 kB
VmSwap:             8520 kB
HugetlbPages:        0 kB
Threads:          15
SigQ:    0/15451
SigPnd:            0000000000000000
ShdPnd:           0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001002
SigCgt: 00000001c0014efd
CapInh:            0000000000000000
CapPrm:          0000000000000000
CapEff:            0000000000000000
CapBnd:           0000003fffffffff
CapAmb:         0000000000000000
Seccomp:         2
Cpus_allowed: 3
Cpus_allowed_list:      0-1
Mems_allowed:          00000000,00000001
Mems_allowed_list:   0
voluntary_ctxt_switches:        32357
nonvoluntary_ctxt_switches:  18926

Or

root@linuxforfreshers.com:~# cat /proc/28168/status | grep Threads
Threads:          15

Method 2: Using ls command

syntax:
ls /proc/<pid>/task | wc -l

This is because, for every thread created within a process, there is a corresponding directory created in /proc/<pid>/task, named with its thread ID. Thus the total number of directories in /proc/<pid>/task represents the number of threads in the process.

Example:

root@linuxforfreshers.com:~# ls /proc/28168/task/ | wc -l
15

Method 3: Using ps command

Syntax:
ps huH p <PID_OF_U_PROCESS> | wc -l
Example :
root@linuxforfreshers.com:~# ps huH p 28168 | wc -l
15
Method 4:

Syntax: ps -eT | grep <PID_of_process> | wc -l

Example :

root@linuxforfreshers.com:~# ps -eT | grep 28168 | wc -l
15








No comments:

Post a Comment