1、使用MNT工具,导出Java进程内存信息
主要步骤:
- 创建日志文件并删除超期的历史文件
- 使用MNT工具,导出Java进程内存信息
- 创建定时任务
#!/bin/bash
# 获取当前脚本文件的绝对路径
CURRENT_PATH=$(readlink -f "$0")
# 待监控进程的关键字
KEY_WORDS_PROCESS_NAME=xxxxxxxxx
# CROMTAB 时间配置
CRONTAB_TIME='0 */1 * * *'
# CROMTAB 命令配置
CRONTAB_CMD="source ~/.profile && sh ${CURRENT_PATH}"
# 当前时间信息
YYYYmmdd=`date +%Y%m%d`
HHMM=`date +%H%M`
# 日志文件名
LOG_FILE_NAME_PREFIX=MNT_detail
LOG_FILE_NAME=${LOG_FILE_NAME_PREFIX}_${YYYYmmdd}_${HHMM}.log
# 日志文件保存路径
LOG_DIR_PATH=/opt/xxxxxxx/MemoryNativeTracking_log
# 日志文件保存天数
maxage=3
#################################################################
## 日志历史文件信息 begin
# 创建日志目录
if [ ! -d "${LOG_DIR_PATH}" ]
then
mkdir -p ${LOG_DIR_PATH}
fi
#清理历史日志目录
find ${LOG_DIR_PATH} -name "^${LOG_FILE_NAME_PREFIX}.*" -atime +$maxage -exec rm {} \;
## 日志历史文件信息 end
#################################################################
## 任务主体 begin
# 获取进程号
pid=$(ps aux | grep ${KEY_WORDS_PROCESS_NAME} | grep -v 'grep' | awk '{print $2}')
# 导出内存信息
jcmd ${pid} VM.native_memory detail > ${LOG_DIR_PATH}/${LOG_FILE_NAME}
## 任务主体 end
#################################################################
# 设置定时
function set_crontab() {
# 获取 crontab 历史内容,并追加新的内容,最后一次写入 crontab 中
( crontab -l | grep -v "${CRONTAB_CMD}" ; echo "${CRONTAB_TIME} ${CRONTAB_CMD} > /dev/null 2>&1" ) | crontab -
echo "contab monitor job has been added (${CURRENT_PATH})."
crontab -l
}
set_crontab