查看java線程cpu占用情況的腳本


#!/bin/bash

[ $#
-ne 1 ] && exit 1

jstack $
1 >/tmp/jstack.log

for cpu_tid in `ps -mp $1 -o THREAD,tid,time|sort -k2nr| sed -n '2,15p' |awk '{print$2"_"$(NF-1)}'`;do

cpu
=`echo $cpu_tid | cut -d_ -f1`

tid
=`echo $cpu_tid | cut -d_ -f2`

xtid
=`printf "%x\n" $tid`

echo -e "\033[31m========================$xtid $cpu%\033[0m"

cat /tmp/jstack.log | sed -n -e "/0x$xtid/,/^$/ p"

#
cat /tmp/jstack.log | grep "$xtid" -A15

done

rm /tmp/jstack.log

 

.echo 具有給輸出的字符加顏色的功能,格式如下:

格式: echo -e "\033[字背景顏色;字體顏色;ANSI控制碼m字符串\033[0m" 

-e選項是讓echo能夠識別轉義字符,否則不能顯示顏色,先上個格式相關的例子

例1:

echo -e "\033[41;36m something here \033[0m" 

 

或者:echo -e "\033[36;41m something here \033[0m"

輸出結果一樣:

 

其中41的位置代表底色為紅色, 36的位置是代表字的顏色為深綠色(在底色為紅色下看不出來),41和36的位置交換也沒有關系。

例2:

 

或者:echo -e "\033[41;36;1m something here \033[0m" 

或者:echo -e "\033[36;41;1m something here \033[0m"

輸出結果:

該格式加了“1m”參數,表示“設置高亮度”,從圖中可以看出亮度不同,例1和例2格式的結尾都有“0m”,表示“關閉所有屬性”,如果不設置0m,那么接下來的輸出都會延續上個輸出屬性。

 

2.參數及對應的顏色

 

字背景顏色 字顏色 ANSI控制碼的說明
40:黑 
41:深紅 
42:綠 
43:黃色 
44:藍色 
45:紫色 
46:深綠 
47:白色 
30:黑 
31:紅 
32:綠 
33:黃 
34:藍色 
35:紫色 
36:深綠 
37:白色 
033[0m 關閉所有屬性 
\033[1m 設置高亮度 
\033[4m 下划線 
\033[5m 閃爍 
\033[7m 反顯 
\033[8m 消隱 
\033[30m -- \33[37m 設置前景色 
\033[40m -- \33[47m 設置背景色 
\033[nA 光標上移n行 
\033[nB 光標下移n行 
\033[nC 光標右移n行 
\033[nD 光標左移n行 
\033[y;xH設置光標位置 
\033[2J 清屏 
\033[K 清除從光標到行尾的內容 
\033[s 保存光標位置 
\033[u 恢復光標位置 
\033[?25l 隱藏光標 
\033[?25h 顯示光標

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com