利用Linux脚本+命令查看线程统计信息
2015-07-08 11:27
489 查看
最近在项目上写了个用于并行计算的线程池工具,遇到了性能瓶颈,于是求助检测软件nmon试图观察线程的统计数据。可惜nmon的信息粒度太大,无法满足需求。
后来发现神奇的Linux下的/proc目录查看具体的线程统计数据,在目录 /proc/PID/stat下面可以找到关于线程的绝大部分详细信息,可惜这个文件的客户体验太差,居然是一大堆以空格分割的纯数据,汗-_-…….无奈之下只好手动写了个简单的脚本,利用shell+awk弄出个小工具来简单检测线程状态,先上效果图:
![](http://img.blog.csdn.net/20150708150540927)
awk是一个非常强大的文本处理工具,可以把它看作一门小的脚本语言。其实完成这个小工具可以还用其他的工具实现,但awk的以“行”为单位的处理方式在这个特殊的数据格式中很有帮助。/proc/pid/stat中的数据是以空格作为分隔符隔离开每个数据的,所以awk在这里大有用武之地。
思路很简单:
用SHELL命令控制读入对应的/proc/pid/stat,然后用awk进行文件格式化输出
由于临时需要马上学的shell和awk脚本,所以代码写的很不好看
上代码:
.sh文件
stat_awk_script部分代码:
如有有别的现成工具可以满足观察线程各种统计数据,请告诉我……直觉上,我觉得我已经在重复造轮子了
后来发现神奇的Linux下的/proc目录查看具体的线程统计数据,在目录 /proc/PID/stat下面可以找到关于线程的绝大部分详细信息,可惜这个文件的客户体验太差,居然是一大堆以空格分割的纯数据,汗-_-…….无奈之下只好手动写了个简单的脚本,利用shell+awk弄出个小工具来简单检测线程状态,先上效果图:
awk是一个非常强大的文本处理工具,可以把它看作一门小的脚本语言。其实完成这个小工具可以还用其他的工具实现,但awk的以“行”为单位的处理方式在这个特殊的数据格式中很有帮助。/proc/pid/stat中的数据是以空格作为分隔符隔离开每个数据的,所以awk在这里大有用武之地。
思路很简单:
用SHELL命令控制读入对应的/proc/pid/stat,然后用awk进行文件格式化输出
由于临时需要马上学的shell和awk脚本,所以代码写的很不好看
上代码:
.sh文件
[code]#Please replace PID according your wish while : do cat /proc/PID/stat | awk -f stat_awk_script sleep 1 done
stat_awk_script部分代码:
[code]{ printf "=======================GET THREAD STAT===================\n" printf " PID: %-15s MODULE_NAME:%-15s TASK_STATE:%-15s \n",$1,$2,$3 printf " PPID:%-15s PGID:%-22s SID:%-15s \n",%4,$5,$6 printf " TTY_NR%-13s TTY_PGRP:%-18s TASK_FLAGS:%-15s",$7,$8,$9 ..... }
如有有别的现成工具可以满足观察线程各种统计数据,请告诉我……直觉上,我觉得我已经在重复造轮子了
相关文章推荐
- Linux基础
- Linux中表示“时间”的结构体和相关函数相关
- linux shutdown related
- CentOS查看线程、硬盘、内存、cpu、网卡
- Linux内核驱动之GPIO子系统
- 【译】29个你必须知道的Linux命令
- archlinux开机挂载分区
- Linux 查看所有登录用户的操作历史
- 在CentOS实现mysql数据库的自动备份
- Linux命令英文全称
- ospf multipath和linux kernel的关系
- CentOS 安装 dokuwiki
- 悟空学Linux专栏----第12篇
- 悟空学Linux专栏----第11篇
- Linux常用命令
- 悟空学Linux专栏----第10篇
- 怎样在linux环境安装和使用花生壳
- Linux开发参考书籍
- 悟空学Linux专栏----第8篇
- 悟空学Linux专栏----第7篇