Shell指令碼實現監視指定程序的執行狀態

2022-09-26 16:36:20 字數 1376 閱讀 9393

在之前的部落格中,曾經寫了自動化測試程式的實現方法,現在開發者需要知道被測試的程序(在此指執行在linux上的主程序的)在異常退出之前的程序的執行狀態,例如記憶體的使用率、cpu的使用率等。

現用shell指令碼實現指定程序的執行狀態。直接上**。

#!/bin/sh

echo "`date`"

echo "start $0---------"

echo程式設計客棧 ""

#每十秒監視一下

sec=10

#取得指定程序名為mainapp,記憶體的使用率,程序執行狀態,程序程式設計客棧名稱

eval $(ps | grep "mainapp" | grep -v grep | awk )

echo $pname $mystatus $meminfo

testprg=""

while [ -n "$pname" -a "$mystatus" != "z" ]

do echo "-------"

echo $pname $mystatus $meminfo

sleep $sec

####you must initialize them again!!!!!

pname=""

mystatus=""

meminfo=""

eval $(ps | grep "mainapp" | grep -v grep | awk )

testprg=`ps | grep "mytester" | grep -v grep | awk ''`

if [ -z "$testprg" ]; then

break

fi##注意一定要再次初始化為空

testprg=""

done

echo "end $0---($pname,$mystatus,$testprg)-------------------"

if [ -z "$pname" ]; then

###發現測被測試程式異常退出後,停止測試程式

killall mytester

echo "stop testprogram mytester"

fiecho "`date`"

echo "---------------current status------------------"

ps | grep -e "mainapp|subapp" | grep -v grep

echo ""

樣實現了每10s讀取一下程序的狀態,然後顯示出來,當發現程序存在並且狀態非z(非殭屍)時,繼續監視,但是當測試程式執行完畢或是異常退出時,該指令碼也會退出監視迴圈程式設計客棧,退出迴圈後,列印出指定程序的狀態。

本文標題: shell指令碼實現監視指定程序的執行狀態

本文位址:

shell指令碼實現程序重啟

bin bash id ps ef grep zabbix grep v 0 grep v zabbix agentd grep v grep awk for id in id dokill 9 id done echo su zabbix 注意 1 不能使用pkill zabbix server ...

shell指令碼實現關閉指定程式名的程序

shell指令碼實現關閉指定程式名的程序 1 基礎篇 在linux系統下,我們進行程式除錯或者是進行應用程式公升級時,經常需要先對我們的目標程式進行kill關閉。此時最基礎的辦法就是先查找到目標程序的pid,然後再執行kill命令去關閉目標程序。接著直接執行kill 9 15889就可以關閉掉此sv...

Shell指令碼實現查殺子程序 殭屍程序

核心伺服器上跑了一堆的指令碼 程式,難免有時候會出現殭屍程序,死不死活不活的在那裡占用資源,程式設計客棧最初只是寫了個根據關鍵字查殺程序的linux shell指令碼,後來發現很多時候程序死在那裡的時候其實是內部呼叫子程序的時候出現了問題,這時候光殺父程序根本沒解決根本問題。比如說rsync的時候通...