⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cm_clr_0003.ksh

📁 ksh 实现的基于hpux下的性能数据以及故障的采集程序。可以作为新手练手使用
💻 KSH
字号:
#!/bin/ksh# 本程序调用不需要参数# 载入 HPUX 实例定义的环境变量. $HOME/hpux/.setenv# 载入 OMS 系统为 HPUX 实例下传的环境信息. $HOME/hpux/config/ftp.cfg# 载入本任务定义的环境变量. $HOME/hpux/src/CM_CLR_0003/fun.cfg# 载入 公共函数部分。常用的函数定义在该文件中. $HOME/hpux/src/COMMON/common.ksh# 切换到日志路径 $LOGPATHcd $LOGPATHlogit INFO "${FUN_NAME}开始{"######################## 判断激活标志是否为1#######################checkActiveFlagif [[ $taskFlag = 1 ]] then        logit WARN "${FUN_NAME}任务失效"        logit INFO "${FUN_NAME}结束"  exit 1elif [[ $agentFlag = 1 ]] then        logit WARN "HPUX实例失效"        logit INFO "${FUN_NAME}结束"  exit 1elif [[ $agentFlag = 2 ]] then        logit WARN "HPUX实例休眠"        logit INFO "${FUN_NAME}结束"  exit 1fiif [[ ! -s  $CFGPATH/process.cfg ]] then  # 如果输入文件为空,采取什么动作  0 -- 报告错误返回1 --  默认将全部数据取出,生成输出文件  # 根据本服务的实际情况,必须存在输入配置文件,因此 NULLDEFAULTFLAG = 0  NULLDEFAULTFLAG = 0  if [[ $NULLDEFAULTFLAG = 0 ]] then    headline  "000602" "配置文件 $CFGPATH/process.cfg 不存在"    logit "WARN" "配置文件 $CFGPATH/process.cfg 不存在"    logit INFO "${FUN_NAME}结束}"    fputhead    exit  fifipidfile=$TMPPATH/ps.datrm -f $pidfileUNIX95= ps -fu $CRONUSER -o etime,pid,comm > $pidfile# 根据定义的进程运行最大周期或最大运行时间,进行对超时进程的清理#  $CFGPATH/task.cfg  每个任务的输出文件保存周期列表while read -r  trcd  trname restdo  if [[ ${#trcd} = 0 ]] then     continue  fi  head=`expr "$trcd" : '^\(.\)'`  # head=`expr substr "$trcd" 1 1 `    if [[ $head = "#" ]] then     continue  fi   logit DEBUG "$trcd $trname $rest"  grep -e "$trcd" ${CFGPATH}/process.cfg | read -r task period  timelimit rest  # 如果没有定义,则使用默认程序运行周期  # LOGKEEPDAYS定义在 hpux/.setenv 中   if [[ ${#timelimit} = 0 || ${timelimit} = 0 ]] then     timelimit=$ELAPSEDTIMES     elapsedlimit=$ELAPSEDLIMIT     logit DEBUG "使用默认的程序运行周期${ELAPSEDTIMES}倍,以及最大运行时间${ELAPSEDLIMIT}分钟 "  fi  # 取出任务的运行时间等信息  grep -e "$trcd" $pidfile  2>/dev/null | read -r duration taskpid taskcommand rest    if [[ ${#duration} = 0 ]] then     logit INFO  "任务 $trcd $trname 没有需要清理的进程"     continue  fi    # 运行时间为 00:00 时不清理进程  if [[ ${duration} = "00:00" ]] then     logit WARN "任务 $trcd $trname pid 为 $taskpid 进程不需要清理"     continue  fi    # 计算运行时间的分钟数  elapsed_time ${duration} | read -r elapsed_min  (( procduration =  period * timelimit ))  # 如果程序的运行时间超过运行周期的倍数限制,则杀掉进程  if (( elapsed_min  >= procduration )) ; then      kill -9 $taskpid    logit INFO "任务 $trcd $trname pid 为 $taskpid ,运行时间为 $elapsed_min 分钟,超过限制 $procduration,杀掉该进程"    continue  fi  logit INFO  "任务 $trcd $trname pid 为 $taskpid 运行时间为 $elapsed_min 分钟"  # 如果超过最大运行时间限制,杀掉进程  if (( elapsed_min > $ELAPSEDLIMIT ))   then    kill -9 $taskpid  fi     # 判断如果进程运行时间超过运行周期限制,则杀掉进程done  < $CFGPATH/task.cfglogit INFO  "本次进程清理成功"# 构造本次任务的结果文件headline 000000 "本次进程清理成功"# 将本次任务的结果文件发送到 OMS 服务器cd $OUTPATHfputheadlogit INFO "${FUN_NAME}结束}"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -