Shell脚本实现监视指定进程的运行状态
程序员文章站
2022-05-24 13:02:18
在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在linux上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率、cp...
在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在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(非僵尸)时,继续监视,但是当测试程序执行完毕或是异常退出时,该脚本也会退出监视循环,退出循环后,打印出指定进程的状态。
上一篇: Shell动态生成数组的多种方法
下一篇: 喝啤酒好处有哪些?这些小知识你又知道多少