用于检查应用程序运行状况的通用脚本

时间:2015-06-09 11:05:36

标签: shell

我编写了一个shell脚本(Health_app.sh)来检查应用程序的运行状况。为此,它从App_Details文件中获取进程的名称并检查PID(是否正在运行)以及它是否在日志(字段3)中未运行和grep用于该进程并将电子邮件发送到提到的电子邮件ID在App_Details文件中(字段4)。

App_Details有以下记录:

  

PROCESS_NAME | Process_description | logfile_path |电子邮件

     

abcd |主程序来调用   dataready|/123/456/log|vikas@yahoo.com

     

PQRS |第二   过程.......................... |/123/456/log|vikas@yahoo.com

以下是我的脚本的样子:

  export App_Details=/home/123/sanity/App_Details

  while read line
  do
      export procname=$(echo $line | cut -d " " -f1)
      export PROCDES=$(echo $line | cut -d " " -f2)
      #if ps -ef |grep [`echo $procname|awk '{print substr($0,1,1)}'`] [`echo $procname|awk '{print substr($0,2,length($0))}'`]> /dev/null
      if ps -ef |grep -q [`echo $procname|awk '{print substr($0,1,1)}'`] `echo $procname|awk '{print substr($0,2,length($0))}'`

      then
          export part1=[`echo $procname|awk '{print substr($0,1,1)}'`]
          export part2=`echo $procname|awk '{print substr($0,2,length($0))}'`
          export PROCID=`ps -ef |grep $part1$part2|awk -F ' ' '{print $2}'`
      else
          export PROCID="OFFLINE"
          trace_path=$(echo $line | cut -d " " -f3)
          export mail=$(echo $line | cut -d " " -f4)
          file_name=`ls -rt $trace_path/$procname*.trc 2>/dev/null | tail -1`
        #export PROCDES=$(echo `tail -10 $file_name`)
        (echo `tail -10 $file_name`) >> send.txt
        mailx -s "Please find the alerts for your application OFFLINE services" vikas@domain.com < send.txt
      fi
      echo $PROCID|awk '{ printf("%-20s", $0)}'
      echo $procname|awk '{ printf("%-20s", $0)}'
      echo $PROCDES|awk '{ printf("%-20s\n", $0)}'
  done<$App_Details

现在问题是grep -q对于solaris是非法的,并且它在solaris服务器中不起作用。

0 个答案:

没有答案