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

📄 wk_pid_1012.ksh

📁 ksh 实现的基于hpux下的性能数据以及故障的采集程序。可以作为新手练手使用
💻 KSH
字号:
#!/bin/ksh# 本程序调用不需要参数# 载入 HPUX 实例定义的环境变量. $HOME/hpux/.setenv# 载入 OMS 系统为 HPUX 实例下传的环境信息. $HOME/hpux/config/ftp.cfg# 载入本任务定义的环境变量. $HOME/hpux/src/WK_PID_1012/fun.cfg# 载入 公共函数部分。常用的函数定义在该文件中. $HOME/hpux/src/COMMON/common.ksh# 切换到文件上传路径cd $OUTPATHlogit 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 1fi# label 0 -- 无输入文件  1 -- 有输入文件label=if [[ ! -s  $CFGPATH/WK_PID_1012.cfg ]] then  label=0  # 如果输入文件为空,采取什么动作  0 -- 报告错误返回1 --  默认将全部数据取出,生成输出文件  # 根据本服务的实际情况,必须存在输入配置文件,因此 NULLDEFAULTFLAG = 0  NULLDEFAULTFLAG=0  if [[ $NULLDEFAULTFLAG = 0 ]] then    headline  "000622" "配置文件 $CFGPATH/WK_PID_1012.cfg 不存在"    logit "WARN" "配置文件 $CFGPATH/WK_PID_1012.cfg 不存在"    logit INFO "${FUN_NAME}结束}"    fputhead    exit  fielse  label=1fi# 构造本次任务的结果文件  headline "000000" "主机关键进程状态信息采集成功"tmpfile=$TMPPATH/ps.tmp/usr/bin/getconf _SC_PAGE_SIZE | read -r pageSizecmdList=# for i in `cat $CFGPATH/WK_PID_1012.cfg`while read -r  userName procName procDesc procRespawnFlag procDetectCmd procStartCmddo   cmdList=$procName   logit DEBUG "procName is $procName"       # procRespawnFlag   0 -- 重启  1 --  不重启,只报告状态    if [[ $procRespawnFlag = 0 ]] then     if [[ $procDetectCmd = null || $procStartCmd = null  ]] then        procState=        procTime=        procMemSize=         infoline "011201" "主机关键进程没有配置重启命令或存活检查命令" "${procName}" "${procState}"  "${procTime}" "${procMemSize}"        continue     fi   fi  UNIX95= ps -C $cmdList -o user,comm,time,sz,state | tail +2 > $tmpfile    #  0    Nonexistent S    Sleeping W    Waiting   #  R    Running     I    Intermediate Z    Terminated  #  T    Stopped     X    Growing    cat $tmpfile    # label 0 -- 没有该进程   1 -- 存在该进程  label=0  while read -r  userId procName procTime procMemPage procStateFlag rest  do    if [[ $userId != $userName ]] then       continue    fi    label=1    [[ $procStateFlag = 0 ]] &&  procState=Nonexistent    [[ $procStateFlag = S ]] &&  procState=Sleeping    [[ $procStateFlag = W ]] &&  procState=Waiting    [[ $procStateFlag = R ]] &&  procState=Running    [[ $procStateFlag = I ]] &&  procState=Intermediate    [[ $procStateFlag = Z ]] &&  procState=Terminated    [[ $procStateFlag = T ]] &&  procState=Stopped    [[ $procStateFlag = X ]] &&  procState=Growing      # 将 sz 单位转为为 Kbytes    echo "$procMemPage * $pageSize / 1024 " | bc | read -r procMemSize      infoline "011200" "主机关键进程状态信息结果" "${procName}" "${procState}"  "${procTime}" "${procMemSize}"    done <  $tmpfile  # 删除临时文件  rm -f $tmpfile    if [[ $label = 0 ]] then    infoline "011202" "主机用户 $userName 的关键进程  $procDesc $cmdList 该进程不存在" "${procName}" "${procState}"  "${procTime}" "${procMemSize}"    eval "$procStartCmd this" 2>/dev/null    eval "procDetectCmd this" 2>/dev/null    if [[ $? != 0 ]] then       procState=       procTime=       procMemSize=        infoline "011203" "主机用户 $userName 的关键进程 $cmdList $procDesc 没有启动成功" "${procName}" "${procState}"  "${procTime}" "${procMemSize}"    fi  fi  done < $CFGPATH/WK_PID_1012.cfg# 将本次任务的结果文件发送到 OMS 服务器fputrptlogit INFO "${FUN_NAME}结束}"

⌨️ 快捷键说明

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