您的位置:首页 > 运维架构 > Linux

利用Linux脚本+命令查看线程统计信息

2015-07-08 11:27 489 查看
最近在项目上写了个用于并行计算的线程池工具,遇到了性能瓶颈,于是求助检测软件nmon试图观察线程的统计数据。可惜nmon的信息粒度太大,无法满足需求。

后来发现神奇的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
.....
}


如有有别的现成工具可以满足观察线程各种统计数据,请告诉我……直觉上,我觉得我已经在重复造轮子了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: