Skip to content

系统一键备份脚本 #18

New issue

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

Open
duoan opened this issue Mar 15, 2017 · 0 comments
Open

系统一键备份脚本 #18

duoan opened this issue Mar 15, 2017 · 0 comments

Comments

@duoan
Copy link
Owner

duoan commented Mar 15, 2017

#!/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目录下"

@duoan duoan changed the title 系统意见备份脚本 系统一键备份脚本 Mar 15, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant