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组成

  • 相关阅读:
    数据库字段包含反斜杠的查询处理
    sql中的日期时间处理
    查询时间的测试
    group by 和 聚合函数的使用
    比较版本号
    sql IIF函数的应用
    win10系统杀毒功能
    php性能的问题
    linux 下ab压力测试
    datatables的学习总结
  • 原文地址:https://www.cnblogs.com/chenzechao/p/10577024.html
Copyright © 2011-2022 走看看