生产力工具集

Mars 2020年09月28日 46次浏览

工具

开源项目

脚本

查找cpu>0的java线程

#!/bin/sh
# 查找目的进程
pid=`ps -ef|grep halo |grep -v 'grep'|awk '{print $2}'`
sfile="/tmp/java/$pid.trace"
tfile="/tmp/java/$pid.trace.tmp"
rm -f $sfile   $tfile
echo "pid $pid"

jstack $pid > $tfile
#cat $tfile
ps -mp $pid -o THREAD,tid,time|awk '{if ($2>0 && $8 != "-") print $8,$2}'|while read line;
do
        nid=$(echo "$line"|awk '{printf("0x%x",$1)}')
        cpu=$(echo "$line"|awk '{print $2}')
        echo "nid: $nid, cpu: $cpu %">>$sfile
        lines=`grep $nid -A 100 $tfile |grep -n '^$'|head -1|awk -F':' '{print $1}'`
        ((lines=$lines-1))
        if [ "$lines" = "-1" ];
        then
              grep $nid -A 100 $tfile  >>$sfile
             echo '' >>$sfile
        else
              grep $nid -A $lines $tfile  >>$sfile
        fi
done
rm -f $tfile
echo "read msg in $sfile"