【Script】定时执行任务脚本

25 阅读1分钟

1、使用MNT工具,导出Java进程内存信息

主要步骤:

  1. 创建日志文件并删除超期的历史文件
  2. 使用MNT工具,导出Java进程内存信息
  3. 创建定时任务
#!/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