LINUX.ORG.RU

простой скрипт... ума не приложу как сделать


0

0

while true; do if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then sleep 2; else /path/my_prog; fi done

Это обычная проверка на смерть проги и если оное произошло то запуск иначе дрыхнуть 2 секунды. Я хочу сюда как нибудь впихнуть такую штуку через каждые 900 секунд прогу my_prog надо грохнуть

while true; do Ncl=`ps ax|grep prog|grep -v 'grep'|grep my|awk '{print $1}'` if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then kill -SIGKILL $Ncl; else echo "alredy dead"; fi; sleep 900; done На данный момент они запускаются обособленно . Я хотел бы связать их. Жду советов как это сделать.

anonymous

while true; 
do 
  if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then 
      sleep 2; 
  else 
      /path/my_prog; 
  fi 
done 

Это обычная проверка на смерть проги и если оное 
произошло то запуск иначе дрыхнуть 2 секунды. 
Я хочу сюда как нибудь впихнуть такую штуку через 
каждые 900 секунд прогу my_prog надо грохнуть 

while true; 
do 
  Ncl=`ps ax|grep prog|grep -v 'grep'|grep my|awk '{print $1}'` 
  if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then 
    kill -SIGKILL $Ncl; 
  else 
    echo "alredy dead"; 
  fi; 
  sleep 900; 
done 
На данный момент они находятся\запускаются в двух файлах.
Я хотел бы связать их. Жду советов как это сделать.

anonymous
()
Ответ на: комментарий от anonymous

не особо вникая в проблену на вскидку такой вариант
while true; 
do 
  if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then 
      sleep 2; 
  else 
      /path/my_prog&; 

      while true; 
          do 
          Ncl=`ps ax|grep prog|grep -v 'grep'|grep my|awk '{print $1}'` 
          if ps ax|grep prog|grep -v 'grep'|grep my > /dev/null; then 
            kill -SIGKILL $Ncl; 
         else 
           echo "alredy dead"; 
        fi; 
        sleep 900;   
     done 
  fi 
done 

короче.. надо чтоб после запуска /path/my_prog продолжилось выполнения сркипда.. да?.. так для этого надо запустить /path/my_prog& как фоновый процесс..

Nesk
()
Ответ на: комментарий от anonymous

#! /bin/bash
while true; 
do
    for ((i=451; i=$[$i-1];)); do
        Ncl=`pidof my_prog`
        if [ -z "$Ncl" ]; then 
            /path/my_prog &
        else    
            sleep 2
        fi      
    done
    Ncl=`pidof my_prog`
    if [ -z "$Ncl" ]; then
        echo "alredy dead"
    else
        kill -SIGKILL $Ncl
    fi  
done

sdio ★★★★★
()
Ответ на: комментарий от Nesk

/path/my_prog в фоновом режиме запускать не надо . Т.к. это демон ... проблема заключается в том чтобы проверять одновременно его на то что он не запущен и пускать и каждые 900 секунд при этом его убивать. Я не могу придумать как это сделать одновременно поэтому эти две задачи разделенны на два скрипта а я хотел бы их совместить в один скрипт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.