0

私はシェルスクリプトが初めてで、いくつかの問題が発生しています。サービスが実行されているかどうかを確認するスクリプトが必要です。実行されていない場合、フラグが存在しない場合は、すべてのサービスを開始します。私が間違っているのは何ですか?

#!/bin/bash

file= "$PIN_HOME/apps/DE_BILL_MI_BRM/alarmistica/flags/intervencao.flag"

# Check if services are running 
for service in $BRM_SERVICES
do
    if  [ps -ef | grep $service | grep -v grep | awk 'NR>1{for (i=1;i<=NF;i++)if($i==1) print "Services not running", i}' ]; then
        echo $service " is not running correctly"
    else
        if [ -f "$file" ]; then
          echo "Flag exists. The service will not start"
        else
          echo "$file not found. Starting all services"
          pin_ctl start all
        fi      
    fi  
done

の場合($i==1)、サービスは実行されていません。

しかし、結果は対応していません。たとえば、サービスがダウンしている場合、スクリプトはサービスを開始しません...

4

1 に答える 1

0

プロセス テーブルを確認するには、pgrep代わりに使用します。

#!/bin/bash

file= "$PIN_HOME/apps/DE_BILL_MI_BRM/alarmistica/flags/intervencao.flag"

# Check if services are running 
for service in $BRM_SERVICES
do
   pgrep -f "$service";
   exstat=$?; # This checks the exit status
   if [ "$exstat" -eq 0 ] && ! [ -f "$file" ]; then
      echo "pgrep returned exit status $extstat";
   else
      echo "$file not found. Starting all services"
      pin_ctl start all
    fi       
done
于 2013-10-07T16:44:12.110 に答える