zoukankan      html  css  js  c++  java
  • Shell检查程序是否正常,并显示出程序启动时间、执行时间

    项目中多个实例,而每个实例均启动一个程序,本脚本将多个程序统一进行监控,并支持文件配置

    #!/bin/sh
    bin=$(cd `dirname $0`;pwd)
    cd ${bin}
    
    ### 定义检查函数
    chkProgram(){
        # programName    程序名
        # correctNum     程序正确的进程数
        # programSubName 程序的子程序名
        programName=$1
        correctNum=$2
        programSubName=$3
    
        # 判断是否带子程序名
        if [ -n "${programSubName}" ]
        then
            programNum=$(ps -ef|grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|grep ${programSubName}|wc -l)
            info=($(ps -eo pid,lstart,etime,cmd |grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|grep ${programSubName}|awk '{print $1" "$3" "$4" "$5" "$6" "$7}'|tail -1))
            program="${programName}|${programSubName}"
        else
            programNum=$(ps -ef|grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|wc -l)
            info=($(ps -eo pid,lstart,etime,cmd |grep -Ewv "grep|less|more|zgrep|zless|vi|vim|gzip"|grep ${programName}|awk '{print $1" "$3" "$4" "$5" "$6" "$7}'|tail -1))
            program=${programName}
        fi
    
        # 解析进程信息
        pid=${info[0]}
        startTime=$(date -d "${info[1]} ${info[2]} ${info[3]} ${info[4]}" "+%Y-%m-%d %H:%M:%S")
        etime=${info[5]}
    
        # 判断进程数是否一致
        if [ ${programNum} -eq ${correctNum} ]
        then
            printf "%-26s %7s %20s %14s %12s %12s %10s
    " "${program}" "ok" "${startTime}" "${etime}" "${programNum}" "${correctNum}" "${pid}"
        else
            printf "%-26s %7s %20s %14s %12s %12s %10s
    " "${program}" "ERROR" "${startTime}" "${etime}" "${programNum}" "${correctNum}" "${pid}"
        fi
    }
    
    ### 打印标题
    printf "%-26s %7s %20s %14s %12s %12s %10s
    " "ProgramName" "Status" "StartTime" "RunningTime" "ProgramNum" "CorrectNum" "PID"
    
    ### 检查子程序
    for i in `cat programSubNameFile`
    do
        chkProgram "programName" 1 ${i}
    done
    
    ### 检查程序
    chkProgram "programName" 1

    PS. 发现zless实际是由less和zgrep组成

  • 相关阅读:
    HDU 1527 取石子游戏 (威佐夫博奕)
    HDU 1159 Common Subsequence (LCS)
    HDU 1160 FatMouse's Speed (LIS)
    HDU 2577 How to Type (DP)
    csu 1395: Timebomb (模拟)
    csu 1556: Jerry's trouble(大数取模)
    csu 1553: Good subsequence (最长连续子序列)
    csu 1548: Design road (三分)
    csu 1547: Rectangle (01背包)
    csu 1541: There is No Alternative(Kruskal 最小生成树)
  • 原文地址:https://www.cnblogs.com/chenzechao/p/10577024.html
Copyright © 2011-2022 走看看