两个shell脚本jvm

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 11:51 点击:

第一个 定时抓取服务器JVM相关信息
#! /bin/sh #get_current_time export JAVA_HOME=/opt/jdk1.6.0_10/export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH date=`date "+%Y-%m-%d-%H:%M:%S"` Root="/data/dxm/" jmapends=$Root$date"_jmap.txt"jstackends=$Root$date"_jstack.txt" jstateends=$Root$date"_jstate.txt" #start to register the jmap message echo "start to register the jmap to "$jmapends jmap -histo:live `jps|grep Resin |awk 'NR==1'|awk '{print $1}'` > $jmapends sleep 2 #start to register the jtack message echo "start to register the jstack to "$jstackends jstack -l `jps|grep Resin |awk 'NR==1'|awk '{print $1}'` > $jstackends sleep 2 #start to register the jstate message echo "start to register the jstate message to "$jstateends jstat -gcutil -t -h20 `jps|grep Resin |awk 'NR==1'|awk '{print $1}'` 1000 20 > $jstateends
 
这个可以跑个定时器:
crontab -e
*/10 * * * * sh /timer/timer.sh  #每十分钟抓一次
 
第二个脚本:对上面的脚本改进一下,只有系统负载达到指定的值之后才打印JVM信息
Java代码
#! /bin/sh       function printJVMMessage() {     #get_current_time   export JAVA_HOME=/opt/jdk1.6.0_10/   export PATH=$JAVA_HOME/bin:$PATH   export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH     #only the system load greate than 1*8PU then start to print the gc details       date=`date "+%Y-%m-%d-%H:%M:%S"`     Root="/data/dxm/"      jmapends=$Root$date"_jmap.txt"  jstackends=$Root$date"_jstack.txt"  jstateends=$Root$date"_jstate.txt"      #start to register the jmap message   echo "start to register the jmap to "$jmapends   jmap -histo:live `jps|grep Resin |awk 'NR==1'|awk '{print $1}'` > $jmapends     sleep 2    #start to register the jtack message   echo "start to register the jstack to "$jstackends   jstack -l `jps|grep Resin |awk 'NR==1'|awk '{print $1}'` > $jstackends     sleep 2    #start to register the jstate message   echo "start to register the jstate message to "$jstateends   jstat -gcutil -t -h20 `jps|grep Resin |awk 'NR==1'|awk '{print $1}'`  1000 20 > $jstateends     }       #System Max Load Per CPU,when the SystemLoad reached the MAX_LOAD * CPU_NUMBER then start register the jvm message   MAX_LOAD=1    CPU_NUMBER=`cat /proc/cpuinfo | grep processor |wc -l`     <STRONG style="BACKGROUND-COLOR: #ffffff"><SPAN style="COLOR: #ff0000">TOTAL_LOAD_TO_WARN</SPAN></STRONG>=$(($MAX_LOAD*$CPU_NUMBER))   #TOTAL_LOAD_TO_WARN=1    CURRENT_SYSTEM_LOAD=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`     Start_Time=`date "+%Y-%m-%d-%H:%M:%S"`     echo 'start to print the jvm message...currenttime is:'$Start_Time   echo 'current system load is'$CURRENT_SYSTEM_LOAD' and TOTAO_LOAD_TO_WARN is '$TOTAL_LOAD_TO_WARN     if [ $(echo "$CURRENT_SYSTEM_LOAD > $TOTAL_LOAD_TO_WARN"|bc) == 1 ]; then       echo 'printint the jvm message...'      printJVMMessage   fi     Finish_Time=`date "+%Y-%m-%d-%H:%M:%S"`   echo 'finish to print the jvm message...and current time is:'$Finish_Tim

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • /etc/fstab 详解
    • nginx主主集群
    •  LVS-NAT和LVS-DR模式的实现详解
    •  RHCE考试之磁盘配额
    • 学习笔记:ACL详解
    •  LVM逻辑卷管理器
    • suse linux双网卡双网关配置
    •  Nginx主主负载均衡架构
    • ubuntu学习Mysql

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1