zoukankan      html  css  js  c++  java
  • Shell脚本之监视指定进程的执行状态

    在之前的博客中,以前写了自己主动化測试程序的实现方法,如今开发人员须要知道被測试的进程(在此指执行在LINUX上的主进程的)在异常退出之前的进程的执行状态,比如内存的使用率、CPU的使用率等.
    现用shell脚本实现指定进程的执行状态。
    直接上代码。

    #!/bin/sh
    echo "`date`"
    echo "Start $0---------"
    echo ""
    #每十秒监视一下
    sec=10
    #取得指定进程名为mainAPP。内存的使用率。进程执行状态,进程名称
    eval $(ps | grep "mainApp" | grep -v grep | awk  {'printf("memInfo=%s;myStatus=%s;pName=%s",$3,$4,$5)'})
    echo $pName $myStatus $memInfo
    testPrg=""
    while [ -n "$pName"  -a "$myStatus" != "Z" ]
    do
            echo "----------`date`---------------------"
            echo $pName $myStatus $memInfo
            sleep $sec
            ####You must initialize them again!!!!!
            pName=""
            myStatus=""
            memInfo=""
            eval $(ps | grep "mainApp" | grep -v grep | awk  {'printf("memInfo=%s;myStatus=%s;pName=%s",$3,$4,$5)'})
            testPrg=`ps | grep "MyTester" | grep -v grep | awk '{print $0}'`
            if [ -z "$testPrg" ]; then
                    break
            fi
            ##注意一定要再次初始化为空
            testPrg=""
    done
    echo "End $0---($pName,$myStatus,$testPrg)-------------------"
    if [ -z "$pName" ]; then
                    ###发现測被測试程序异常退出后,停止測试程序
            killall MyTester
            echo "stop TestProgram MyTester"
    fi
    echo "`date`"
    echo "---------------Current Status------------------"
    ps | grep -E "mainApp|SubApp"  | grep -v grep
    echo ""
    

    这样实现了每10s读取一下进程的状态,然后显示出来。当发现进程存在而且状态非Z(非僵尸)时,继续监视,可是当測试程序执行完成或是异常退出时,该脚本也会退出监视循环。退出循环后

  • 相关阅读:
    Perl分片技术
    Perl的time、localtime和gmtime函数
    Perl文件名通配和文件查找
    Perl复制、移动、重命名文件/目录
    Perl文件、目录常用操作
    Perl文件测试操作和stat函数
    Linux终端会话实时共享(kibitz)
    Perl的IO操作(2):更多文件句柄模式
    Perl的IO操作(1):文件句柄
    Perl文件句柄相关常量变量
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7245188.html
Copyright © 2011-2022 走看看