免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1555 | 回复: 0
打印 上一主题 下一主题

[系统管理] top输出结果格式化显示的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-27 20:29 |只看该作者 |倒序浏览
有个多线程的java进程,使用top -Hp jvm_pid 可看到所有的线程的资源使用情况

[mdw@tdy218 ~]$ top -Hp 4813
top - 12:06:10 up  7:13,  1 user,  load average: 0.00, 0.01, 0.03
Tasks:  36 total,   0 running,  36 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.1%ni, 97.8%id,  1.8%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   2056564k total,  1944488k used,   112076k free,   125612k buffers
Swap:  4192956k total,        0k used,  4192956k free,  1141140k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                  
4813 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.00 java                                                                     
4814 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:04.41 java                                                                     
4815 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.18 java                                                                     
4816 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.12 java                                                                     
4817 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.19 java                                                                     
4818 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.18 java                                                                     
4819 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:01.26 java                                                                     
4820 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.02 java                                                                     
4821 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.06 java                                                                     
4822 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.00 java                                                                     
4823 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:03.30 java                                                                     
4824 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:03.22 java                                                                     
4825 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.00 java                                                                     
4826 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.49 java                                                                     
4829 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.00 java                                                                     
4831 mdw  15   0 1659m 417m  26m S  0.0 20.8   0:00.06 java      
...................

最左侧的PID列,就是4813这个进程号里每个线程的线程号,默认按每个线程CPU的占用率进行排序。

目前想格式化这个输出结果到这种效果:

只显示前10行CPU占用率高的线程,并且将最左侧的PID列的十进制线程号转换为十六进制。

[mdw@tdy218 ~]$ top -Hp 4813 | awk 'BEGIN {printf "THREAD#\tSTATE\t%CPU\tTIME+\n-------------------------------\n"}{if(NR>7 && NR<1 printf ("0x%x \t%s \t%s \t%s\n",$2,$9,$10,$12)}'

THREAD# STATE   %CPU    TIME+
-------------------------------
0x12cd  S       0.0     0:00.00
0x12ce  S       0.0     0:04.41
0x12cf  S       0.0     0:00.18
0x12d0  S       0.0     0:00.12
0x12d1  S       0.0     0:00.19
0x12d2  S       0.0     0:00.18
0x12d3  S       0.0     0:01.47
0x12d4  S       0.0     0:00.02
0x12d5  S       0.0     0:00.06
0x12d6  S       0.0     0:00.00

   
结果是输出来了,但又有了一个问题,这个输出的结果不会刷新了,只显示一次,这是为什么?

如果把 if(NR>7 && NR<1 去掉后面的条件,&& NR <18,他就可以循环,但是第2次循环时,输出的结果就出现问题了。

大虾们帮忙分析下,多谢!~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP