The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"помогите со скриптом"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"помогите со скриптом" 
Сообщение от anatoly Искать по авторуВ закладки on 13-Окт-05, 13:51  (MSK)
Помогите с написанием простого shell-скрипта, примерно такого содержания:

while true
  здесь запустить демон
done

Смысл в том, чтобы при падении демона (по какой-либо причине) он запустился бы вновь из скрипта. Я не очень силен в bash/sh :) потому прошу общественность помочь. Кстати, у демона есть ключ, запускающий его в фоне (вероятно '&' не нужно ставить в конце ком.строки?).

Заранее премного благодарен!

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "помогите со скриптом" 
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 13-Окт-05, 14:36  (MSK)
>Помогите с написанием простого shell-скрипта, примерно такого содержания:
>
>while true
>  здесь запустить демон
>done
>
>Смысл в том, чтобы при падении демона (по какой-либо причине) он запустился
>бы вновь из скрипта. Я не очень силен в bash/sh :)
>потому прошу общественность помочь. Кстати, у демона есть ключ, запускающий его
>в фоне (вероятно '&' не нужно ставить в конце ком.строки?).
>
>Заранее премного благодарен!


1. Sistema kakaja ?
2. Kak mozno odnozna4no opredelit 4to process zaver6ilsa za islku4enijem
listinga processov ?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "помогите со скриптом" 
Сообщение от anatoly Искать по авторуВ закладки on 13-Окт-05, 15:32  (MSK)
>
>1. Sistema kakaja ?
linux
>2. Kak mozno odnozna4no opredelit 4to process zaver6ilsa za islku4enijem
>listinga processov ?
мыслю так:

while 1
  /path/to/daemon -d  #run as background
  #если демон завершился - попадаем сюда и и переходим на новый круг цикла
done

Разве не так?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "помогите со скриптом" 
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 13-Окт-05, 16:26  (MSK)
>>
>>1. Sistema kakaja ?
>linux
>>2. Kak mozno odnozna4no opredelit 4to process zaver6ilsa za islku4enijem
>>listinga processov ?
>мыслю так:
>
>while 1
>  /path/to/daemon -d  #run as background
>  #если демон завершился - попадаем сюда и и переходим на
>новый круг цикла
>done
1. Jesli demon zapustitca normalno, to t.k. on podderzivajet
rabotu v daemon rezime, srazu osvobodit terminal i vernet kod
vipolnenija komandi. Skazem 0. No tut-zhe snova budet popitka
zapustit e6e odin takoi demon, i tak do beskone4nosti.

2. Jesli en zapustitca korektno, togda budet o 6ibka i kod o6ibki
vozvratit i snova budet probovat zapuskatca. I tak beskone4no.
>
>Разве не так?

Ispolzui inittab ili storonije skripti dla upravlenija.
man inittab

Togda sam process init budet sledit za zapuskajemim processom i
v slu4aje ego viklu4enija budet perezapuskat ego vnov.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "помогите со скриптом" 
Сообщение от anatoly Искать по авторуВ закладки on 14-Окт-05, 05:16  (MSK)
>1. Jesli demon zapustitca normalno, to t.k. on podderzivajet
>rabotu v daemon rezime, srazu osvobodit terminal i vernet kod
>vipolnenija komandi. Skazem 0. No tut-zhe snova budet popitka
>zapustit e6e odin takoi demon, i tak do beskone4nosti.
Да, верно... Возможно так будет правильнее:
while 1
  ps ax | grep -w daemon
  if [ $? != 0 ]
  #демон не запущен - запускаем
  /path/to/daemon -d
  fi
done

>Ispolzui inittab ili storonije skripti dla upravlenija.
>man inittab
>
>Togda sam process init budet sledit za zapuskajemim processom i
>v slu4aje ego viklu4enija budet perezapuskat ego vnov.
IMHO inittab не совсем логично использовать? У меня обычное пользовательное приложение, хотелось бы обойтись /etc/rc.local :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "помогите со скриптом" 
Сообщение от edwin Искать по авторуВ закладки(ok) on 14-Окт-05, 08:22  (MSK)
>Да, верно... Возможно так будет правильнее:
>while 1
>  ps ax | grep -w daemon
>  if [ $? != 0 ]
>  #демон не запущен - запускаем
>  /path/to/daemon -d
>  fi
>done

Он работать не будет.
На высоконагруженных системах grep попадет в списов процессов:
[monitor]@edwin 07:17:50>ps axw | grep -w perl
74180  p0  R+     0:00,00 grep -w perl
61856  p7- I      0:07,10 /usr/bin/perl /home/edwin/bin/daemon-perl.pl (perl5.8.6)
  624 con- I+     0:08,20 /usr/bin/perl -w /usr/local/work/soundnagios.pl (perl5.8.6)
  628 con- I+     1:17,60 /usr/bin/perl -w /usr/local/work/wwreport.pl (perl5.8.6)

Итого - при упавшем демоне скрипт его не подымет ;((
Намного грамотнее проверять наличие PID файла демона.

>
>>Ispolzui inittab ili storonije skripti dla upravlenija.
>>man inittab
>>
>>Togda sam process init budet sledit za zapuskajemim processom i
>>v slu4aje ego viklu4enija budet perezapuskat ego vnov.
>IMHO inittab не совсем логично использовать? У меня обычное пользовательное приложение, хотелось
>бы обойтись /etc/rc.local :)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "помогите со скриптом" 
Сообщение от edwin Искать по авторуВ закладки(ok) on 14-Окт-05, 08:30  (MSK)

>Итого - при упавшем демоне скрипт его не подымет ;((
>Намного грамотнее проверять наличие PID файла демона.

Попутно выясняя , есть ли процесс с таким PID

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "помогите со скриптом" 
Сообщение от allez Искать по авторуВ закладки(ok) on 14-Окт-05, 09:51  (MSK)
>
>>Итого - при упавшем демоне скрипт его не подымет ;((
>>Намного грамотнее проверять наличие PID файла демона.
>
>Попутно выясняя , есть ли процесс с таким PID


Полностью согласен, но позволю одно маленькое уточнение: чтобы grep не
нашел сам себя в списке процессов, можно использовать такую конструкцию:
ps ax | grep -w perl | grep -v grep

Для anatoly: inittab нелогично использовать лишь для тех демонов, которые
то запускаются, то останавливаются. Если же демон должен запуститься при
старте системы и не прекращать работы до ее (системы) остановки, причем
"возрождаясь" в случае безвременной кончины, то логичнее inittab'a и нет
ничего.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "помогите со скриптом" 
Сообщение от edwin Искать по авторуВ закладки(ok) on 14-Окт-05, 09:55  (MSK)
>>
>>>Итого - при упавшем демоне скрипт его не подымет ;((
>>>Намного грамотнее проверять наличие PID файла демона.
>>
>>Попутно выясняя , есть ли процесс с таким PID
>
>
>Полностью согласен, но позволю одно маленькое уточнение: чтобы grep не
>нашел сам себя в списке процессов, можно использовать такую конструкцию:
>ps ax | grep -w perl | grep -v grep

А я и не знаю.
Большое Вам спасибо.

>Для anatoly: inittab нелогично использовать лишь для тех демонов, которые
>то запускаются, то останавливаются. Если же демон должен запуститься при
>старте системы и не прекращать работы до ее (системы) остановки, причем
>"возрождаясь" в случае безвременной кончины, то логичнее inittab'a и нет
>ничего.

Это будем наиболее разумным.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "помогите со скриптом" 
Сообщение от Brainbug Искать по авторуВ закладки(ok) on 14-Окт-05, 12:28  (MSK)
>>1. Jesli demon zapustitca normalno, to t.k. on podderzivajet
>>rabotu v daemon rezime, srazu osvobodit terminal i vernet kod
>>vipolnenija komandi. Skazem 0. No tut-zhe snova budet popitka
>>zapustit e6e odin takoi demon, i tak do beskone4nosti.
>Да, верно... Возможно так будет правильнее:
>while 1
>  ps ax | grep -w daemon
>  if [ $? != 0 ]
>  #демон не запущен - запускаем
>  /path/to/daemon -d
>  fi
>done
>
>>Ispolzui inittab ili storonije skripti dla upravlenija.
>>man inittab
>>
>>Togda sam process init budet sledit za zapuskajemim processom i
>>v slu4aje ego viklu4enija budet perezapuskat ego vnov.
>IMHO inittab не совсем логично использовать? У меня обычное пользовательное приложение, хотелось
>бы обойтись /etc/rc.local :)

Kak raz, kak uzhe pislos, ispolzovatj inittab i jest samij lu46ij
put v dannmo slu4aje. Pri uslovii 4to ho4etca realizovatj vse sderstvami
samoi sistemi. Jesli storonnije ve6i, to jest naprimer daemontools i
monogo analogov.


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "помогите со скриптом" 
Сообщение от anatoly Искать по авторуВ закладки on 14-Окт-05, 14:55  (MSK)
Всем спасибо за рекомендации, решил-таки воспользоваться inittab'ом. Добавил запись:

d:345:respawn:/path/to/my/daemon -d

Рестартовал init, демон запустился, исправно работает, но периодически в логах сообщения:

init: Id "d" respawning too fast: disabled for 5 minutes

Судя по всему, проблема в демоне, слишком быстро падает?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру