We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#!/bin/sh ### ====================================================================== ### ## ## ## snapshot script ## ## ## ### ====================================================================== ### source /etc/profile USAGE="Usage: shapshot.sh <tomcat pid> <tomcat port>" SYSTEM_PROPERTY="" # if no args specified, show usage if [ $# -lt 2 ]; then echo $USAGE exit 1 fi PID=$1 TOMCATPORT=$2 echo "tomcat pid="$1 echo "tomcat port="$2 #echo "Determine if a directory exists /home/tmp" if [ -e "/opt/snapshot" ]; then echo "/opt/snapshot exists" rm -f /opt/snapshot/*.log rm -f /opt/snapshot/*.hprof else mkdir -p /opt/snapshot; fi echo "开始存储当前机器负载情况" cat /proc/loadavg > /opt/snapshot/loadavg.log echo "当前机器负载情况存储完成" echo "开始抓堆栈共三次" path="/opt/snapshot/"$PID"_1_stack.log" sudo $JAVA_HOME/bin/jstack $PID > $path sleep 3 path="/opt/snapshot/"$PID"_2_stack.log" sudo $JAVA_HOME/bin/jstack $PID > $path sleep 3 path="/opt/snapshot/"$PID"_3_stack.log" sudo $JAVA_HOME/bin/jstack $PID > $path path="/opt/snapshot/"$PID"_top10_thread.log" top -bp $PID -H |tail -n +8 | head -n 10 > $path echo "堆栈抓取完成" echo "记录当前堆的使用情况" sudo $JAVA_HOME/bin/jmap -heap $PID > /opt/snapshot/$PID"_heap.log" echo "dump 当前进程的内存" sudo $JAVA_HOME/bin/jmap -dump:format=b,file="/opt/snapshot/"$PID".hprof" $PID echo "记录当前进程GC情况,记录20S" path="/opt/snapshot/"$PID"_gc.log" sudo $JAVA_HOME/bin/jstat -gcutil $PID 2000 10 > $path echo "记录三个代的内存占用情况" path="/opt/snapshot/"$PID"_gccapacity.log" sudo $JAVA_HOME/bin/jstat -gccapacity $PID > $path echo "记录连接当前tomcat的tcp连接数" path="/opt/snapshot/"$PID"_tcp.log" netstat -n | grep "$TOMCATPORT" | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' > $path echo "记录当前进程打开线程数" path="/opt/snapshot/"$PID"_pstree.log" pstree $PID > $path echo "记录当前进程打开的文件数" path="/opt/snapshot/"$PID"_lsof.log" lsof -p $PID | wc -l > $path echo "系统当前快照完成,请手动转存log,并且重启服务,快照文件在 /opt/snapshot目录下"
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The text was updated successfully, but these errors were encountered: