歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux Shell 進程監控

程序寫好了,得監控上,嘿嘿。研究出來如下代碼,進行使用,嘿嘿。 我這裡每個進程只需要一個實例,即使實例有多個,也會使用不同的配置文件區分開來,否則不知道程序的哪個實例掛了, 不說了,附上代碼,自己看吧。重點在config那塊兒,我寫的是相對目錄哦。嘿嘿

  1. #!/bin/bash  
  2. #func checkProcessName  
  3. # param1  threadname  param2 user  
  4. CheckProcess()  
  5. {  
  6.     PROCESS_NAME="$1"  
  7.     if [ "$PROCESS_NAME" = "" ];then  
  8.         return 1;  
  9.     fi  
  10.     USER_NAME="$2"  
  11.     PROCESS_NUM=0  
  12.     COMMAND_STR=""  
  13.     if [ "$USER_NAME" = "" ];then  
  14.         PROCESS_NUM=`ps -elf|grep "${PROCESS_NAME}" |grep -v "grep"|wc -l`  
  15.     else  
  16.     PROCESS_NUM=`ps -u "${USER_NAME}" -lf |grep "${PROCESS_NAME}" |grep -v "grep"|wc -l`  
  17.     fi  
  18.       
  19.     if [ ${PROCESS_NUM} -eq 1 ];then     
  20.         return 0     
  21.     else    
  22.         return 1     
  23.     fi     
  24. }  
  25. #config   
  26. process=(\  
  27.   "./servers servers.ini"\  
  28.   "./serverc serverc.ini"\  
  29.  )  
  30. #  "./baike_fspage baike_fspage.ini"\  
  31. processdir=(\  
  32.   "/server/servers"\  
  33.   "/server/serverc"\  
  34. )  
  35.   
  36. #  "/baiketrans" \  
  37. curdir=`pwd`  
  38. #main  
  39. while [ 1 ] ;do  
  40.    sleep 10  
  41.    for i in $( seq 0 $[${#process[@]}-1] )   
  42.    do  
  43.         CheckProcess "${process[$i]}" "jianghi"  
  44.         notLive=$?     
  45.         if [ $notLive -eq 1 ];     
  46.         then     
  47.             cd ${curdir}${processdir[$i]}  
  48.             if [ $? -eq 0 ];then   
  49.                 ./startup.sh  
  50.                 echo "[" `date "+%Y/%m/%d %k:%M:%S"` "]" `pwd`/startup.sh "start..."  
  51.             else  
  52.                 echo "[" `date "+%Y/%m/%d %k:%M:%S"` "] not find ${curdir}${processdir[$i]}/startup.sh "   
  53.             fi  
  54.         fi     
  55.   
  56.    done   
  57. done   
Copyright © Linux教程網 All Rights Reserved