最近在项目上写了个用于并行计算的线程池工具,遇到了性能瓶颈,于是求助检测软件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