Скрипт перезапуска приложения при падении и завершении работы

Модератор: Модераторы разделов

xfree86
Сообщения: 97

Скрипт перезапуска приложения при падении и завершении работы

Сообщение xfree86 »

Добрый день...
Если следующая ситуация...

Есть приложение - например "server", которое нужно запустить скриптом...
В случае падения или завершения его работы нужно его запустить занова...

проще всего конечно было бы сделать бесконечный цикл с блокирующим выводом...
но вот проблема в том, что нужно запускать не только его...

в итоге нужно сделать примерно следующее...

Код: Выделить всё

#! /bin/bash

./server &
./server2 &

цикл бесконечный
{
проверяем запущен ли server, если нет то запускаем

слип на 5 секунд
}


вопрос собственно в том как сделать нокмальную проверку , запущен ли server

может разобрать ps -ax? если да, то как?
или может есть какие-то более хорошие способы решения данной проблемы?
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение Zeus »

1. Запустить сначала server2, а потом в цикле - server (если такое допустимо, конечно).
2. Сохранить pid server'а в переменную и в цикле делать wait $PID
Спасибо сказали:
ssh
Сообщения: 78
ОС: Debian

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение ssh »

Код: Выделить всё

#! /bin/bash

./server &
./server2 &

цикл бесконечный
{
 ps -A | grep server > /dev/null
 if [ $? = "1" ]
      then server&

слип на 5 секунд
}
Спасибо сказали:
MiK13
Сообщения: 1281
ОС: Linux Debian

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение MiK13 »

ssh писал(а):
12.05.2008 11:40

Код: Выделить всё

#! /bin/bash

./server &
./server2 &

цикл бесконечный
{
 ps -A | grep server > /dev/null
 if [ $? = "1" ]
      then server&

слип на 5 секунд
}

Может быть стоит после grep добавить -w? А то он и на server2 среагирует...
Наверно, ещё можно вместо вместо ps -A | grep server
поставить pgrep -x server
Спасибо сказали:
xfree86
Сообщения: 97

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение xfree86 »

Спасибо...
Потестировал на kwrite - работает))))))

Код: Выделить всё

#! /bin/bash

kwrite &

while 1>0
do
ps -A | grep kwrite > /dev/null
if [ $? = "1" ]
then kwrite &
fi
sleep 5
done
Спасибо сказали:
Аватара пользователя
halturin
Сообщения: 167
ОС: Linux

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение halturin »

а если процесс будет слишком похож на что-то еще? вот даже взять тот же kwrite... появится какой-нть geekwrite и получишь кривизну :)
Спасибо сказали:
MiK13
Сообщения: 1281
ОС: Linux Debian

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение MiK13 »

halturin писал(а):
12.05.2008 14:31
а если процесс будет слишком похож на что-то еще? вот даже взять тот же kwrite... появится какой-нть geekwrite и получишь кривизну :)

Поэтому я и посоветовал добавить -w после grep или -x после pgrep
Спасибо сказали:
rodgerland
Сообщения: 2
ОС: Ubuntu

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение rodgerland »

А скажите, как сделать тоже самое, только циклически проверять порт (допустим раз в час) и если нет ответа от порта, то рестартовать сервер который работает на этом порту?
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение pcodr »

Например так:

Код: Выделить всё

nc -c '' host port || /etc/init.d/someserver restart
remote system type is unix
Спасибо сказали:
rodgerland
Сообщения: 2
ОС: Ubuntu

Re: Скрипт перезапуска приложения при падении и завершении работы

Сообщение rodgerland »

pcodr писал(а):
23.05.2009 10:22
Например так:

Код: Выделить всё

nc -c '' host port || /etc/init.d/someserver restart


Ладно, а как правельней написать, чтоб проверял порт?
if [ 'nc -w 1 localhost 20077' ??? ]
if ???

Сделал так

if [ `netstat -nl |grep 20077 | wc -l` -lt 1 ]
then
killall server
./1.sh
fi
Спасибо сказали: