<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]在linux中查看线程数的三种方法]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 05 Jul 2013 08:49:48 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	查看线程的方法: <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps -efL, 其中的LWP是线程ID(why是这个), nlwp是线程数. <br/>UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID&nbsp;&nbsp;PPID&nbsp;&nbsp; LWP&nbsp;&nbsp;C NLWP STIME TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME CMD<br/>也就是第四位，是它的线程ID，而第二位则是进程的PID，第三位是子进程号：<br/><textarea name="code" class="php" rows="15" cols="100">
[root@iZ25dcp92ckZ ~]# ps -efL&#124;grep httpmut
root&nbsp;&nbsp;&nbsp;&nbsp; 28740 28265 28740&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: master process] master process
root&nbsp;&nbsp;&nbsp;&nbsp; 28740 28265 28742&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: master process] master process
root&nbsp;&nbsp;&nbsp;&nbsp; 28740 28265 28743&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: master process] master process
48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28741 28740 28741&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: worker process] worker process
48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28741 28740 28744&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: worker process] worker process
48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28741 28740 28745&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;3 21:49 pts/0&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 [httpmut: worker process] worker process
</textarea><br/><br/>ps -T -p 9613<br/>&nbsp;&nbsp;PID&nbsp;&nbsp;SPID TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME CMD<br/> 9613&nbsp;&nbsp;9613 pts/1&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 thread01<br/> 9613&nbsp;&nbsp;9712 pts/1&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 thread01<br/> 9613&nbsp;&nbsp;9795 pts/1&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 thread01<br/> 9613&nbsp;&nbsp;9853 pts/1&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 thread01<br/><br/>看线程PID:<br/>ps -efL&#124;grep logstash&#124;awk &#039;&#123;print $4&#125;&#039;&#124;wc<br/>&nbsp;&nbsp;&nbsp;&nbsp;148&nbsp;&nbsp;&nbsp;&nbsp; 148&nbsp;&nbsp;&nbsp;&nbsp; 888<br/><br/>查看进程28740是主进程，28741是子进程，28265则是程序的主进程来自:<br/>[root@iZ25dcp92ckZ ~]# ps aux&#124;grep 28265<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 28265&nbsp;&nbsp;0.0&nbsp;&nbsp;0.3 116648&nbsp;&nbsp;3412 pts/0&nbsp;&nbsp;&nbsp;&nbsp;Ss&nbsp;&nbsp; 21:29&nbsp;&nbsp; 0:00 -bash：<br/>也就是bash终端~<br/><br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
[root@iZ25dcp92ckZ ~]# ps aux&#124;grep httpmut
root&nbsp;&nbsp;&nbsp;&nbsp; 28740&nbsp;&nbsp;0.0&nbsp;&nbsp;0.2 193092&nbsp;&nbsp;2444 pts/0&nbsp;&nbsp;&nbsp;&nbsp;Sl+&nbsp;&nbsp;21:49&nbsp;&nbsp; 0:00 [httpmut: master process] master process
48&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28741&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0 193092&nbsp;&nbsp; 856 pts/0&nbsp;&nbsp;&nbsp;&nbsp;Sl+&nbsp;&nbsp;21:49&nbsp;&nbsp; 0:00 [httpmut: worker process] worker process
</textarea><br/><br/>列名分别是：<br/>UID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PID&nbsp;&nbsp;PPID&nbsp;&nbsp; LWP&nbsp;&nbsp;C NLWP STIME TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME CMD<br/>其中<br/>UID为User ID.<br/>PID为processid,进程标识符<br/>PPID为 parent processid，父进程标识符2，<br/>LWP为light weight process orthread， 轻量级进程，即线程标识符<br/>NLWP为，number oflwps(threads) in the process, 线程的数量<br/><br/>摘自：http://blog.csdn.net/jiafu1115/article/details/19070015<br/><br/>——————————————————————————————————————————————————————<br/>48属于www用户的id，这儿我这个没有添加，所以没有显示www，对上面这些线程进行跟踪：<br/><textarea name="code" class="C" rows="15" cols="100">
strace -f -p 28740 -p 28742 -p 28743 -p 28741 -p 28744 -p 28745 -p 28788
Process 28740 attached with 3 threads
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Process 28741 attached with 3 threads
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
strace: attach: ptrace(PTRACE_ATTACH, ...): No such process
[pid 28745] futex(0x608420, FUTEX_WAIT_PRIVATE, 0, NULL &lt;unfinished ...&gt;
[pid 28744] futex(0x608340, FUTEX_WAIT_PRIVATE, 0, NULL &lt;unfinished ...&gt;
[pid 28741] epoll_wait(4,&nbsp;&nbsp;&lt;unfinished ...&gt;
[pid 28743] futex(0x608420, FUTEX_WAIT_PRIVATE, 0, NULL &lt;unfinished ...&gt;
[pid 28742] futex(0x608340, FUTEX_WAIT_PRIVATE, 0, NULL &lt;unfinished ...&gt;
[pid 28740] wait4(-1, 
</textarea><br/>————————————————————————————————<br/><br/>1、 cat /proc/$&#123;pid&#125;/status<br/>Threads:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 //这个是核心，2个线程！如下：<br/>[root@test multepoolserver]# cat /proc/26202/status<br/>Name:&nbsp;&nbsp; multipepollserv<br/>State:&nbsp;&nbsp;S (sleeping)<br/>SleepAVG:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 58%<br/>Tgid:&nbsp;&nbsp; 26202<br/>Pid:&nbsp;&nbsp;&nbsp;&nbsp;26202<br/>PPid:&nbsp;&nbsp; 18260<br/>TracerPid:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br/>Uid:&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>Gid:&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br/>FDSize: 256<br/>Groups: 0 1 2 3 4 6 10 <br/>VmPeak:&nbsp;&nbsp;&nbsp;&nbsp;26036 kB<br/>VmSize:&nbsp;&nbsp;&nbsp;&nbsp;26036 kB<br/>VmLck:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 kB<br/>VmHWM:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1144 kB<br/>VmRSS:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1144 kB<br/>VmData:&nbsp;&nbsp;&nbsp;&nbsp;10508 kB<br/>VmStk:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;84 kB<br/>VmExe:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16 kB<br/>VmLib:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3052 kB<br/>VmPTE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80 kB<br/>StaBrk: 03103000 kB<br/>Brk:&nbsp;&nbsp;&nbsp;&nbsp;03124000 kB<br/>StaStk: 7fff73219100 kB<br/>Threads:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<br/>SigQ:&nbsp;&nbsp; 1/70656<br/>SigPnd: 0000000000000000<br/>ShdPnd: 0000000000000000<br/>SigBlk: 0000000000000000<br/>SigIgn: 0000000000001000<br/>SigCgt: 0000000180004407<br/>CapInh: 0000000000000000<br/>CapPrm: 00000000fffffeff<br/>CapEff: 00000000fffffeff<br/>Cpus_allowed:&nbsp;&nbsp; 00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff<br/>Mems_allowed:&nbsp;&nbsp; 00000000,00000003<br/><br/>2、pstree -p $&#123;pid&#125;<br/>[root@test multepoolserver]# pstree -p 26202<br/>multipepollserv(26202)─┬─multipepollserv(26203)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─&#123;multipepollserv&#125;(26204)<br/><br/>26204 就是一个线程。<br/><br/>[root@test multepoolserver]# ps aux&#124;grep httpmut<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 26202&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp;26036&nbsp;&nbsp;1144 pts/10&nbsp;&nbsp; Sl+&nbsp;&nbsp;17:35&nbsp;&nbsp; 0:00 [httpmut: master process] H?????5r% <br/>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26203&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp;15840&nbsp;&nbsp; 468 pts/10&nbsp;&nbsp; S+&nbsp;&nbsp; 17:35&nbsp;&nbsp; 0:00 [httpmut: worker process] H?????5r% <br/><br/>3、top -p $&#123;pid&#125; 再按H&nbsp;&nbsp; 或者直接输入 top -bH -d 3 -p&nbsp;&nbsp;$&#123;pid&#125;<br/>[root@test multepoolserver]# top -p 26202<br/>按大写的H(shift+h)，就能看到有几个线程：<br/>&nbsp;&nbsp;PID USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PR&nbsp;&nbsp;NI&nbsp;&nbsp;VIRT&nbsp;&nbsp;RES&nbsp;&nbsp;SHR S %CPU %MEM&nbsp;&nbsp;&nbsp;&nbsp;TIME+&nbsp;&nbsp;COMMAND<br/>26202 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18&nbsp;&nbsp; 0 26036 1144&nbsp;&nbsp;984 S&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 0:00.00 multipepollserv<br/>26204 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp; 0 26036 1144&nbsp;&nbsp;984 S&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 0:00.00 multipepollserv<br/><br/>top -bH -d 3 -p 26202&nbsp;&nbsp;//3秒刷新一次<br/>[root@test multepoolserver]# top -bH -d 3 -p 26202<br/>top - 17:39:34 up 650 days,&nbsp;&nbsp;3:35, 10 users,&nbsp;&nbsp;load average: 1.04, 1.01, 1.01<br/>Tasks:&nbsp;&nbsp; 2 total,&nbsp;&nbsp; 0 running,&nbsp;&nbsp; 2 sleeping,&nbsp;&nbsp; 0 stopped,&nbsp;&nbsp; 0 zombie<br/>Cpu(s):&nbsp;&nbsp;0.9%us,&nbsp;&nbsp;0.3%sy,&nbsp;&nbsp;0.0%ni, 97.8%id,&nbsp;&nbsp;0.9%wa,&nbsp;&nbsp;0.0%hi,&nbsp;&nbsp;0.0%si,&nbsp;&nbsp;0.0%st<br/>Mem:&nbsp;&nbsp; 8180460k total,&nbsp;&nbsp;7648040k used,&nbsp;&nbsp; 532420k free,&nbsp;&nbsp;1269016k buffers<br/>Swap:&nbsp;&nbsp;8385920k total,&nbsp;&nbsp; 218976k used,&nbsp;&nbsp;8166944k free,&nbsp;&nbsp;4855668k cached<br/><br/>&nbsp;&nbsp;PID USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PR&nbsp;&nbsp;NI&nbsp;&nbsp;VIRT&nbsp;&nbsp;RES&nbsp;&nbsp;SHR S %CPU %MEM&nbsp;&nbsp;&nbsp;&nbsp;TIME+&nbsp;&nbsp;COMMAND<br/>26202 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;18&nbsp;&nbsp; 0 26036 1144&nbsp;&nbsp;984 S&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 0:00.00 multipepollserv<br/>26204 root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20&nbsp;&nbsp; 0 26036 1144&nbsp;&nbsp;984 S&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 0:00.00 multipepollserv <br/><br/>top -H<br/>手册中说：-H : Threads toggle<br/>加上这个选项启动top，top一行显示一个线程。否则，它一行显示一个进程。<br/><br/>4、ps xH<br/>手册中说：H Show threads as if they were processes<br/>这样可以查看所有存在的线程。<br/><br/>5、ps -mp &lt;PID&gt;<br/>手册中说：m Show threads after processes<br/>这样可以查看一个进程起的线程数。<br/>http://liulinxia02.blog.163.com/blog/static/268687720111129103740947/<br/><br/>[root@test multepoolserver]# ps aux&#124;grep httpmut<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 26202&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp;26036&nbsp;&nbsp;1144 pts/10&nbsp;&nbsp; Sl+&nbsp;&nbsp;17:35&nbsp;&nbsp; 0:00 [httpmut: master process] H?????5r% <br/>www&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26203&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp;15840&nbsp;&nbsp; 468 pts/10&nbsp;&nbsp; S+&nbsp;&nbsp; 17:35&nbsp;&nbsp; 0:00 [httpmut: worker process] H?????5r% <br/>root&nbsp;&nbsp;&nbsp;&nbsp; 26206&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp;61172&nbsp;&nbsp; 748 pts/14&nbsp;&nbsp; S+&nbsp;&nbsp; 17:35&nbsp;&nbsp; 0:00 grep httpmut<br/>[root@test multepoolserver]# ps -mp 26202<br/>&nbsp;&nbsp;PID TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME CMD<br/>26202 pts/10&nbsp;&nbsp; 00:00:00 multipepollserv<br/>&nbsp;&nbsp;&nbsp;&nbsp;- -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 -<br/>&nbsp;&nbsp;&nbsp;&nbsp;- -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 -<br/>[root@test multepoolserver]# ps -mp 26203<br/>&nbsp;&nbsp;PID TTY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME CMD<br/>26203 pts/10&nbsp;&nbsp; 00:00:00 multipepollserv<br/>&nbsp;&nbsp;&nbsp;&nbsp;- -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 -<br/><br/><br/><br/><br/><br/><br/><br/>——————————————————————————————————————————<br/><br/>在linux中查看线程数的三种方法<br/> <br/>在linux中查看线程数的三种方法<br/>&nbsp;&nbsp;www.2cto.com&nbsp;&nbsp;<br/>1、top -H<br/>手册中说：-H : Threads toggle<br/>加上这个选项启动top，top一行显示一个线程。否则，它一行显示一个进程。<br/> <br/>2、ps xH<br/>手册中说：H Show threads as if they were processes<br/>这样可以查看所有存在的线程。<br/> <br/>3、ps -mp &lt;PID&gt;<br/>手册中说：m Show threads after processes<br/> <br/>这样可以查看一个进程起的线程数。<br/><br/>来源：http://www.2cto.com/os/201212/177103.html<br/>更多：http://www.360doc.com/content/13/0512/13/9085503_284797175.shtml
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]在linux中查看线程数的三种方法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>