自啓動異常關閉服務

    因爲有些服務自身原因,經常會異常退出。如果每次異常退出後都要進入系統,略微。。。

    還是寫腳本解決,如果一個服務一個腳本也略微.。。於是考慮加入一個文本文件,記錄需要監控各項服務。文本文件格式如下:

  1. service_name:absolute_path:start_service 
  2. service_name->即爲服務名稱,如mysqld,named 
  3. absolute_path->對於有些自己做的並不是很完善的程序,在bash後臺運行的情況下,默認目錄爲根,爲滿足程序中的相關文件引用,需要先切換到程序根目錄 
  4. start_service:即爲啓動程序的方法,如mysqld可以用“service mysqld start",其他程序依情況而定,如有的緊緊是"service_name &" 

   當然爲了日後查看需要,加入日誌功能,日誌格式爲:

  1. SERVICE: [service_name] AT [start_time] START 

   腳本如下:

  1. #!/bin/bash 
  2. #File: ServiceMonitor.sh 
  3. #Auth: Robin 
  4. #Date: 2012/07/30 10-11-10 
  5. #Desc: monitor service which is writen on sm.conf 
  6. #Vers: 1.0 
  7. # 
  8. CONF="/etc/sm.conf" 
  9. LOGF="/var/log/sm.log" 
  10.  
  11. function LOG() { 
  12.     local Ser=$1 
  13.     local Data=`date +"%Y/%m/%d %H:%M"
  14.     echo "SERVICE: [$Ser] AT [$Data] START" >> $LOGF 
  15.  
  16. function IFEXIST() { 
  17.     local Ser=$1 
  18.     ps -ef | grep -w $1 |grep -v grep &> /dev/null 
  19.     flag=$? 
  20.  
  21. function IFSTART() { 
  22.     local Ser=$3 
  23.     local flag=$1 
  24.     local Com=$2 
  25.     local Pat=$4 
  26.     if [ $flag -eq 1 ];then 
  27.         if [[  -n $Pat ]];then 
  28.             cd $Pat 
  29.         fi 
  30.         $Com 
  31.  LOG $Ser 
  32.     fi 
  33.  
  34. function MAIN() { 
  35.     while read LINE;do 
  36.         local Ser=`echo $LINE|cut -d: -f1` 
  37.         local Pat=`echo $LINE|cut -d: -f2` 
  38.         local Com=`echo $LINE|cut -d: -f3` 
  39.         IFEXIST "$Ser" 
  40.         IFSTART "$flag" "$Com" "$Ser" "$Pat" 
  41.     done < $CONF 
  42.  
  43. MAIN 

   最後只需按自己需要,加入crontab即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章