针对zabbix二次开发的监控脚本执行timeout时,zabbix-server性能消耗增大问题,开发处理timeout状态的脚本

脚本内容:

#!/bin/sh

###################################################
# Script to handle execution timeout states
# script by shell
# writed by Deliver
# huchangxi 2022/11/14
###################################################

# 判断脚本是否正在执行
SCRIPTS_NAME=`basename $0`
SCRIPTS_RUN_NUM=`ps -ef | grep ${SCRIPTS_NAME} | grep -w zabbix | grep -v grep | wc -l`

if [ ${SCRIPTS_RUN_NUM} -gt 1 ]; then

SCRIPTS_RUN_PROC=`ps -ef | grep ${SCRIPTS_NAME} | grep -w zabbix | grep -v grep | head -n 1`
SCRIPTS_RUN_PID=`echo ${SCRIPTS_RUN_PROC} | awk '{print $2}'`
# SCRIPTS_RUN_TIME=`ps -p ${SCRIPTS_RUN_PID} -o etimes | tail -n 1`
SCRIPTS_RUN_START_YMDTIME=`ps -p ${SCRIPTS_RUN_PID} -o lstart | grep -v STARTED`
if [ -n "$SCRIPTS_RUN_START_YMDTIME" ];then
SCRIPTS_RUN_START_TIME=`date -d "${SCRIPTS_RUN_START_YMDTIME}" +%s`
SCRIPTS_RUN_NOW_TIME=$(date +%s)
SCRIPTS_RUN_TIME=$[SCRIPTS_RUN_NOW_TIME-SCRIPTS_RUN_START_TIME]
# 给定脚本最长执行时间60S,运行时长大于60s将kill
SCRIPTS_RUN_MAXTIME=60

if [ ${SCRIPTS_RUN_TIME} -gt ${SCRIPTS_RUN_MAXTIME} ]; then

kill ${SCRIPTS_RUN_PID}
if [ $? -eq 0 ]; then
echo "`date +%F-%H:%M:%S` kill running timeout process successful PID: ${SCRIPTS_RUN_PID} ; RUN_START_TIME: ${SCRIPTS_RUN_START_TIME} ; TIME: ${SCRIPTS_RUN_NOW_TIME} ; RUN_TIME: ${SCRIPTS_RUN_TIME} ;PROCESSNAME: ${SCRIPTS_RUN_PROC}"
else
echo "`date +%F-%H:%M:%S` kill running timeout process failed PID: ${SCRIPTS_RUN_PID} ; RUN_START_TIME: ${SCRIPTS_RUN_START_TIME} ; TIME: ${SCRIPTS_RUN_NOW_TIME} ; RUN_TIME: ${SCRIPTS_RUN_TIME} ;PROCESSNAME: ${SCRIPTS_RUN_PROC}"
fi
fi
fi
fi

posted @   呼长喜  阅读(147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示