#!/bin/bash [ $# -ne ] && exit jstack $ >/tmp/jstack.log for cpu_tid in `ps -mp $ -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
下面这个是新脚本
#!/bin/bash
[ $# -ne ] && exit
jstack $ >/tmp/jstack.log
top -H -p $ -b -n1 | grep PID -A10 | grep -v PID | awk '{print$1,$9}' >/tmp/topH.log
cat /tmp/topH.log | while read tid cpu;do
xtid=`printf "%x\n" $tid`
echo -e "\033[31m========================$xtid $cpu%\033[0m"
cat /tmp/jstack.log | sed -n -e "/0x$xtid/,/^$/ p"
done
.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 显示光标 |