zoukankan      html  css  js  c++  java
  • 用jstack自动化捕抓异常java代码脚本

    #!/bin/bash
    date=` date +%y%m%d-%H%M`
    pid=`top -bn1 |grep java | awk '{print $1 " " $9}' |head -1 | cut -f 1`
    pidCPU=`top -bn1 |grep java | awk '{print $1 " " $9}' |head -1 | cut -f 2`
    # java home
    if test -z $JAVA_HOME #est -z $JAVA_HOME 是一个判断表达式,用于判断$JAVA_HOME的值是否为空字符串
    then
    JAVA_HOME='/data/services/jdk1.7.0_79/'
    fi

    # checking pid
    if test -z "$($JAVA_HOME/bin/jps -l | cut -d '' -f 1 | grep $pid)" #jps -l可以列出本机所有java进程的pid,cut -d只切割pid这一列。
    then
    echo "process of $pid is not exists" #查找我们要找的进程是否存在
    exit
    fi

    #line number
    if test -z $linenum #判断linenum是否为空字符串,来定义打印多少行
    then
    linenum=10
    fi
    stackfile=stack$pid.dump #查异常代码文件
    threadsfile=threads$pid.dump #线程id
    # generate java stack
    $JAVA_HOME/bin/jstack -l $pid >> $stackfile #用jstack把异常代码输入到参数文件$pidpid.dump里面去

    ps -mp $pid -o THREAD,tid,time | sort -k2r | awk '{if ($1 !="USER" && $2 != "0.0" && $8 !="-" && $9) print "线程号:"$8 "; CPU负载:" $2;}' >threadsfile.txt #查找出满足第一列是>否为USER&&第二列是否为空值&&第八列是否为-的话就输出第八列的pid保存到threadsfile.txt文件内
    ps -mp $pid -o THREAD,tid,time | sort -k2r | awk '{if ($1 !="USER" && $2 != "0.0" && $8 !="-" && $9) print $8;}' | xargs printf "%x " >> $threadsfile #ps -mp命令是在当前用户下>,列出pid包含的所有线程,本地id,时间,sort 的选项k2是指定第2排序的栏位,r是倒序排列,{if ($1 !="USER" && $2 != "0.0" && $8 !="-") print $8;}是满足第一列是否为USER&&第二列是否为>空值&&第八列是否为-的话就输出第八列的pid,然后打印出来并转成16进制输出到threads$pid.dump文件
    tids="$(cat $threadsfile)" #设置tids变量为threads$pid.dump文件
    for tid in $tids #然后循环打印出来我们要找的异常代码
    do 

    echo "------------------------------ ThreadId (进程号为:$pid;CPU线程号十六进制为:$tid;) ------------------------------"
    cat $stackfile | grep 0x$tid -A $linenum
    done

    参考 http://www.javatang.com 

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/wudongyu/p/8657207.html
Copyright © 2011-2022 走看看