关闭

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

标签: Linux线程内核procLinux脚本
1015人阅读 评论(0) 收藏 举报
分类:

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

后来发现神奇的Linux下的/proc目录查看具体的线程统计数据,在目录 /proc/PID/stat下面可以找到关于线程的绝大部分详细信息,可惜这个文件的客户体验太差,居然是一大堆以空格分割的纯数据,汗-_-…….无奈之下只好手动写了个简单的脚本,利用shell+awk弄出个小工具来简单检测线程状态,先上效果图:
这里写图片描述

awk是一个非常强大的文本处理工具,可以把它看作一门小的脚本语言。其实完成这个小工具可以还用其他的工具实现,但awk的以“行”为单位的处理方式在这个特殊的数据格式中很有帮助。/proc/pid/stat中的数据是以空格作为分隔符隔离开每个数据的,所以awk在这里大有用武之地。
思路很简单:
用SHELL命令控制读入对应的/proc/pid/stat,然后用awk进行文件格式化输出
由于临时需要马上学的shell和awk脚本,所以代码写的很不好看
上代码:
.sh文件

#Please replace PID according your wish
while :
do 
cat /proc/PID/stat | awk -f stat_awk_script
sleep 1
done

stat_awk_script部分代码:

{
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
.....
}

如有有别的现成工具可以满足观察线程各种统计数据,请告诉我……直觉上,我觉得我已经在重复造轮子了

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19880次
    • 积分:418
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:13篇
    • 译文:1篇
    • 评论:8条
    最新评论