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   

相关内容