脚本系统信息收集脚本

定义脚本dump.sh 用于收集当前运行的java程序的相关信息,内容,虚拟内存统计,实时系统监控,端口使用情况等。JDK_PATH用于定义jdk路径,优先使用设置的sdk路径。没有就用系统。
#!/bin/bash
DEPLOY_DIR=`pwd`
JDK_PATH=$DEPLOY_DIR/jdk1.8.0_171/bin
echo "JDK_PATH: $JDK_PATH;"


LOGS_DIR=$DEPLOY_DIR/logs
echo "LOGS_DIR: $LOGS_DIR;"


if [ ! -d $LOGS_DIR ]; then
	mkdir $LOGS_DIR
fi


DUMP_DIR=$LOGS_DIR/dump
if [ ! -d $DUMP_DIR ]; then
	mkdir $DUMP_DIR
fi


DUMP_DATE=`date +%Y%m%d%H%M%S`
DATE_DIR=$DUMP_DIR/$DUMP_DATE
if [ ! -d $DATE_DIR ]; then
	mkdir $DATE_DIR
fi


PIDS=`ps -ef | grep java | grep -v grep |awk '{print $2}'`
if [ -z "$PIDS" ]; then
    echo "ERROR: The java service does not started!"
    exit 1
fi


for PID in $PIDS ; do


	echo "******** $PID Info ********"
	#java虚拟机自带的一种堆栈跟踪工具
	
	if [ -r ${JDK_PATH}/jstack ]; then	
		${JDK_PATH}/jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1
		echo "${JDK_PATH}/jstack $PID"
	else
		jstacke $PID > $DATE_DIR/jstack-$PID.dump 2>&1
		echo "jstack $PID"
	fi


#它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数);甚至支持在运行时修改部分参数
	if [ -r ${JDK_PATH}/jinfo ]; then	
		${JDK_PATH}/jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
		echo "${JDK_PATH}/jinfo $PID"
	else
		jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
		echo "jinfo $PID"
	fi
#通常用来分析系统的垃圾回收情况
	if [ -r ${JDK_PATH}/jstat ]; then
		${JDK_PATH}/jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
		echo "${JDK_PATH}/jstat -gcutil $PID"
	else
		jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
		echo "jstat -gcutil $PID"
	fi
#可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
	if [ -r ${JDK_PATH}/jstat ]; then
		${JDK_PATH}/jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
		echo "${JDK_PATH}/jstat -gccapacity $PID"
	else
		jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
		echo "jstat -gccapacity $PID"
	fi
#打印内存使用的摘要信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap $PID"
	else
		jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
		echo "jmap $PID"
	fi
#java heap信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap -heap $PID"
	else
		jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
		echo "jmap -heap $PID"
	fi


 #打印比较简单的各个有多少个对象占了多少内存的信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap -histo $PID"
	else
		jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
		echo "jmap -histo $PID"
	fi
#列出所有由某个PID对应的进程打开的文件
	lsof -p $PID > $DATE_DIR/lsof-$PID.dump
	echo lsof -p $PID
	
	echo "******** $PID  end ********"
done


#命令查看本机已经开启的端口
if [ -r /bin/netstat ]; then
/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
echo "netstat success"
else
echo "/bin/netstat is not exit"
fi
#用于输出CPU和磁盘I/O相关的统计信息 
if [ -r /usr/bin/iostat ]; then
/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1
echo "iostat success"
else
echo "/usr/bin/iostat is not exit"
fi
#实时系统监控工具 系统启动以后所有信息的平均值
if [ -r /usr/bin/mpstat ]; then
/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
echo "mpstat success"
else
echo "/usr/bin/mpstat is not exit"
fi
# 虚拟内存统计 报告关于进程、内存、I/O等系统整体运行状态
if [ -r /usr/bin/vmstat ]; then
/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
echo "vmstat success"
else
echo "/usr/bin/vmstat is not exit"
fi


#系统使用和空闲的内存情况 总计物理内存的大小
if [ -r /usr/bin/free ]; then
/usr/bin/free -t > $DATE_DIR/free.dump 2>&1
echo "free success"
else
echo "/usr/bin/free is not exit"
fi
#系统活动情况报告
if [ -r /usr/bin/sar ]; then
/usr/bin/sar > $DATE_DIR/sar.dump 2>&1
echo "sar success"
else
echo "/usr/bin/sar is not exit"
fi


#查询服务器已经运行了多久
if [ -r /usr/bin/uptime ]; then
/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1
echo "uptime success"
else
echo "/usr/bin/uptime is not exit"
fi


echo "OK!"
echo "DUMP: $DATE_DIR"
	mkdir $LOGS_DIR
fi


DUMP_DIR=$LOGS_DIR/dump
if [ ! -d $DUMP_DIR ]; then
	mkdir $DUMP_DIR
fi


DUMP_DATE=`date +%Y%m%d%H%M%S`
DATE_DIR=$DUMP_DIR/$DUMP_DATE
if [ ! -d $DATE_DIR ]; then
	mkdir $DATE_DIR
fi


PIDS=`ps -ef | grep java | grep -v grep |awk '{print $2}'`
if [ -z "$PIDS" ]; then
    echo "ERROR: The java service does not started!"
    exit 1
fi


for PID in $PIDS ; do


	echo "******** $PID Info ********"
	#java虚拟机自带的一种堆栈跟踪工具
	
	if [ -r ${JDK_PATH}/jstack ]; then	
		${JDK_PATH}/jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1
		echo "${JDK_PATH}/jstack $PID"
	else
		jstacke $PID > $DATE_DIR/jstack-$PID.dump 2>&1
		echo "jstack $PID"
	fi


#它可以用来查看正在运行的java应用程序的扩展参数(JVM中-X标示的参数);甚至支持在运行时修改部分参数
	if [ -r ${JDK_PATH}/jinfo ]; then	
		${JDK_PATH}/jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
		echo "${JDK_PATH}/jinfo $PID"
	else
		jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
		echo "jinfo $PID"
	fi
#通常用来分析系统的垃圾回收情况
	if [ -r ${JDK_PATH}/jstat ]; then
		${JDK_PATH}/jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
		echo "${JDK_PATH}/jstat -gcutil $PID"
	else
		jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
		echo "jstat -gcutil $PID"
	fi
#可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
	if [ -r ${JDK_PATH}/jstat ]; then
		${JDK_PATH}/jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
		echo "${JDK_PATH}/jstat -gccapacity $PID"
	else
		jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
		echo "jstat -gccapacity $PID"
	fi
#打印内存使用的摘要信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap $PID"
	else
		jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
		echo "jmap $PID"
	fi
#java heap信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap -heap $PID"
	else
		jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
		echo "jmap -heap $PID"
	fi


 #打印比较简单的各个有多少个对象占了多少内存的信息
	if [ -r ${JDK_PATH}/jmap ]; then
		${JDK_PATH}/jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
		echo "${JDK_PATH}/jmap -histo $PID"
	else
		jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
		echo "jmap -histo $PID"
	fi
#列出所有由某个PID对应的进程打开的文件
	lsof -p $PID > $DATE_DIR/lsof-$PID.dump
	echo lsof -p $PID
	
	echo "******** $PID  end ********"
done


#命令查看本机已经开启的端口
if [ -r /bin/netstat ]; then
/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
echo "netstat success"
else
echo "/bin/netstat is not exit"
fi
#用于输出CPU和磁盘I/O相关的统计信息 
if [ -r /usr/bin/iostat ]; then
/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1
echo "iostat success"
else
echo "/usr/bin/iostat is not exit"
fi
#实时系统监控工具 系统启动以后所有信息的平均值
if [ -r /usr/bin/mpstat ]; then
/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
echo "mpstat success"
else
echo "/usr/bin/mpstat is not exit"
fi
# 虚拟内存统计 报告关于进程、内存、I/O等系统整体运行状态
if [ -r /usr/bin/vmstat ]; then
/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
echo "vmstat success"
else
echo "/usr/bin/vmstat is not exit"
fi


#系统使用和空闲的内存情况 总计物理内存的大小
if [ -r /usr/bin/free ]; then
/usr/bin/free -t > $DATE_DIR/free.dump 2>&1
echo "free success"
else
echo "/usr/bin/free is not exit"
fi
#系统活动情况报告
if [ -r /usr/bin/sar ]; then
/usr/bin/sar > $DATE_DIR/sar.dump 2>&1
echo "sar success"
else
echo "/usr/bin/sar is not exit"
fi


#查询服务器已经运行了多久
if [ -r /usr/bin/uptime ]; then
/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1
echo "uptime success"
else
echo "/usr/bin/uptime is not exit"
fi


echo "OK!"
echo "DUMP: $DATE_DIR"

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值