Two shell scripts jvm

Source: Internet
Author: User
The first regular capture of server JVM information #! /Bin/sh # get_current_timeexportJAVA_HOME/opt/jdk1.6.0 _ 10/exportPATH $ JAVA_HOME/bin: $ PATHexportCLASSPATH.: $ JAVA_HOME/lib/tools. jar: $ JAVA_HOME/li

The first regular capture of server JVM-related information
#! /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 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
 
This allows you to run a timer:
Crontab-e
*/10 * sh/timer. sh # capture every 10 minutes
 
The second script: the above script is improved. the JVM information is printed only when the system load reaches the specified value.
Java code
#! /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 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'TOTAL_LOAD_TO_WARN= $ ($ 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 response 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_Time
#! /Bin/sh function printJVMMessage () {# get_current_timeexport 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 register the jstack to "$ jstackends jstack-l 'jps | grep Resin | awk 'NR = 1' | awk '{print $1}''> $ jstackendssleep 2 # start 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 = 1CPU_NUMBER = 'cat/proc/cpuinfo | grep processor | wc-l 'total_load_to_warn = $ ($ 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 response is' $ TOTAL_LOAD_TO_WARN if [$ (echo "$ CURRENT_SYSTEM_LOAD> $ TOTAL_LOAD_TO_WARN" | bc) = 1]; then echo 'printint the jvm message... 'printjvmmessagefi Finish_Time = 'date "+ % Y-% m-% d-% H: % M: % S" 'echo 'finish to print the jvm message... and current time is: '$ Finish_Time
 
 
 
The third script: compare whether the jar packages in the two versions are the same (with changes ):
#! /Bin/sh # compare the lib files's md5 int file1 with those in file2 # if it only exist in file1 or one lib file's md5 is not equal I # with the other then print it to the log.txt LibPath1 = $1LibPath2 = $2 date = 'date "+ % Y-% m-% d-% H: % M: % S "'log = $ date" _log.txt "echo" ----------- LOG file "$ log echo LibPath1: $ LibPath1 echo LibPath2: $ LibPath2echo LibPath1: $ LibPath1 \ n >$ LOG echo LibPath2: $ LibPath2 \ n >> $ LOGecho >>$ LOGecho >> LOG for File in 'ls-f $ LibPath1 | grep jar '; do MD5 = 'md5sum $1 $ File | awk 'NR = 1' | awk '{print $1} ''File2 = $ LibPath2 $ File # echo" File2 --------------- "$ file2 # if the same lib file exist if [! -F "$ File2"]; then echo $ File only exist LibPath1 echo $ File only exist LibPath1 \ n >>$ LOG echo >>$ LOG # if the same file exist in directory2 else MD52 = 'md5sum $ File2 | awk 'NR = 1' | awk '{print $1} ''if [" $ MD5 "! = "$ MD52"]; then echo the $ File changed \ n> $ LOG echo the $ File changed fi done where the File is md5compare. to run sh, run the following command :. /md5compare. sh libpath1 libpath2 note libpath1, libpath2 must end with "/" For example:/opt/ROOT_2011-09-08-09: 57: 26/WEB-INF/lib/instead of/opt/ROOT_2011-09-08-09: 57: 26/WEB-INF/lib]

Author: "sky-Peng"

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.