сценарий оболочки для выполнения остановки запуска нескольких экземпляров httpd - PullRequest
0 голосов
/ 28 июня 2018

Я хочу написать скрипт для перезапуска экземпляров httpd, только если он находится в рабочем состоянии. Например, он работает нормально, но более чем в одном случае он не работает.

ниже приведен скрипт, который я использую:

ctl_var=`find /opt/apache/instances/ -name apachectl  | grep -v "\/httpd\/"`

ctl_proc=`ps -ef | grep -i httpd | grep -i " 1 " wc -l`

if [ $ctl_proc <= 0 ]; 
  then echo "httpd is not running"; 
  else $ctl_var -k stop; echo "httpd stopped successfully" ;
  sleep 5;
  $ctl_var -k start;
  sleep 5;
  echo "httpd started" ps -ef | grep httpd | grep -i " 1 "; 
fi

Пожалуйста, предложите ...

1 Ответ

0 голосов
/ 08 августа 2018

Вы упомянули, что есть несколько экземпляров, я вижу, что он пропускает цикл при выполнении скрипта. Здесь он только перезапускает последний, выбранный в $ ctl_var

Модифицированный скрипт должен выглядеть примерно так, как показано ниже, при необходимости откорректировать скрипт:

ctl_var=`find /opt/apache/instances/ -name apachectl  | grep -v "\/httpd\/"`
ctl_proc=`ps -ef | grep -i httpd | grep -i " 1 " wc -l`

for i in `echo $ctl_var`
do
    if [ $ctl_proc <= 0 ]; 
      then echo "httpd is not running"; 
      else $i -k stop; echo "httpd stopped successfully" ;
      sleep 5;
      $i -k start;
      sleep 5;
      echo "httpd started" ps -ef | grep httpd | grep -i " 1 "; 
    fi
done

Надеюсь, это поможет.

...