Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как правильно перезапускать скрипт?  (Прочитано 2117 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Объединил пару каналов как описано тут все работает. Но появилась необходимость перезапускать скрипт т.к. один из каналов туннель по pppoe и при переподключении маршрут к нему не восстанавливается т.к. используется динамический ip. Сам скрипт стартует из /etc/network/interfaces. Планирую перезапуск из ip-up/ip-down но как это все дело описать не знаю. Подскажите плиз :)

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #1 : 11 Июня 2012, 15:55:47 »
в if-up или if-down скрипт приблизительно такого вида:
#! /bin/sh
set -e

if [ "$IFACE" = ppp0 ]; then
если переподключается нужный нам интерфейс, делам тут чего-нить... и выход
exit 0;


fi

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #2 : 11 Июня 2012, 18:41:03 »
в if-up или if-down скрипт приблизительно такого вида:
#! /bin/sh
set -e

if [ "$IFACE" = ppp0 ]; then
если переподключается нужный нам интерфейс, делам тут чего-нить... и выход
exit 0;


fi

Вот так допустим, хватит простого указания на скрипт? Его не надо сначала как-то "STOP", а потом "START" чтоб дубликатом не работал? Нужен просто рестарт скрипта при поднятии/падении соответствующего интерфейса, как я понял за это и отвечают ip-up\ip-down.

#! /bin/sh
set -e

if [ "$IFACE" = ppp0 ]; then
/etc/balance/check.sh
exit 0;


fi
« Последнее редактирование: 11 Июня 2012, 18:48:52 от fet4 »

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #3 : 11 Июня 2012, 19:32:32 »
из if-up выполняются когда интерфейс поднимается, из down соотв когда ложится,  а там исходи из своей логики при каком событии тебе нужно что-то делать. в твоем случае достаточно скрипта только в up

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #4 : 11 Июня 2012, 20:33:27 »
в if-up или if-down скрипт приблизительно такого вида:
#! /bin/sh
set -e

if [ "$IFACE" = ppp0 ]; then
если переподключается нужный нам интерфейс, делам тут чего-нить... и выход
exit 0;


fi

Do NOT "set -e" ...
Написано в чуть не каждом управляющем скрипте.
Читать когда научимся?

Пользователь решил продолжить мысль 11 Июня 2012, 20:34:26:
из if-up выполняются когда интерфейс поднимается, из down соотв когда ложится,  а там исходи из своей логики при каком событии тебе нужно что-то делать. в твоем случае достаточно скрипта только в up
Из if-up.d скрипт выполняется, когда интерфейс УЖЕ поднят. (Соответствует if-post-up в interfaces)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #5 : 11 Июня 2012, 21:59:58 »
в if-up или if-down скрипт приблизительно такого вида:
#! /bin/sh
set -e

if [ "$IFACE" = ppp0 ]; then
если переподключается нужный нам интерфейс, делам тут чего-нить... и выход
exit 0;


fi

Do NOT "set -e" ...
Написано в чуть не каждом управляющем скрипте.
Читать когда научимся?
И что это значит?! как правильно сделать?

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #6 : 11 Июня 2012, 22:21:07 »

Do NOT "set -e" ...
Написано в чуть не каждом управляющем скрипте.
Читать когда научимся?
а в чем собственно проблема?, в том, что из-за этого параметра , скрипт завершит работу в случае неуспешного завершения проверки условия или выполнения комманды
Из if-up.d скрипт выполняется, когда интерфейс УЖЕ поднят. (Соответствует if-post-up в interfaces)
тут согласен, неточно выразился, но в данном случае, ему как раз это и нужно, насколько я понял

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #7 : 11 Июня 2012, 22:35:39 »
Повторюсь, тот скрипт который запускается вместе с системой через /etc/network/interfaces не надо никак останавливать?!
Просто еще раз запускаем /etc/balance/check.sh и все?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #8 : 11 Июня 2012, 23:07:33 »
Повторюсь, тот скрипт который запускается вместе с системой через /etc/network/interfaces не надо никак останавливать?!
Останавливать надо что-то, что работает. Он у тебя что, всё ещё работает? :)


Do NOT "set -e" ...
Написано в чуть не каждом управляющем скрипте.
Читать когда научимся?
а в чем собственно проблема?, в том, что из-за этого параметра , скрипт завершит работу в случае неуспешного завершения проверки условия или выполнения комманды
В том, что он завершит работу с неопределённым кодом ошибки.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #9 : 12 Июня 2012, 00:53:32 »
Повторюсь, тот скрипт который запускается вместе с системой через /etc/network/interfaces не надо никак останавливать?!
Останавливать надо что-то, что работает. Он у тебя что, всё ещё работает? :)

Естественно работает, в фоне. Если запустить просто с командной строки, то скрипт будет выводить каждые 10 сек инфу о состоянии каналов, так вот если канал через ppp переподключиться, то скрипт его уже не возвратит обратно в дефолт и думает что он лежит, т.к. меняются ip-адерса туннеля. По-этому и решил делать рестарт скрипту. Со статикой все окей.


Do NOT "set -e" ...
Написано в чуть не каждом управляющем скрипте.
Читать когда научимся?
а в чем собственно проблема?, в том, что из-за этого параметра , скрипт завершит работу в случае неуспешного завершения проверки условия или выполнения комманды
В том, что он завершит работу с неопределённым кодом ошибки.
И все? на что это повлияет?
« Последнее редактирование: 12 Июня 2012, 00:56:12 от fet4 »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #10 : 12 Июня 2012, 01:12:50 »
[
fet4,
тестsudo wget victor2012.info/iface-script.txt -O /etc/network/if-up.d/iface-script
sudo chmod +x /etc/network/if-up.d/iface-script
sudo /etc/init.d/networking restart
Wars ~.o

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #11 : 12 Июня 2012, 01:23:38 »
И все? на что это повлияет?
Например, сервис ifupdown может подумать, что произошел сбой при включении интерфейса, и прекратить запуск последующих скриптов.

[
fet4,
тестsudo wget victor2012.info/iface-script.txt -O /etc/network/if-up.d/iface-script
sudo chmod +x /etc/network/if-up.d/iface-script
sudo /etc/init.d/networking restart


Да-да, больше запускай всякие-разные неизвестные скрипты. Потом только не спрашивай, кто тебе сервер ломанул - ты же сам и лопухнулся...

Пользователь решил продолжить мысль 12 Июня 2012, 01:26:31:
Естественно работает, в фоне. Если запустить просто с командной строки, то скрипт будет выводить каждые 10 сек инфу о состоянии каналов, так вот если канал через ppp переподключиться, то скрипт его уже не возвратит обратно в дефолт и думает что он лежит, т.к. меняются ip-адерса туннеля. По-этому и решил делать рестарт скрипту. Со статикой все окей.
Стрёмный скрипт. Я бы в cron его повесил, чем так вертеться.
Останавливать не надо, там ничего особенного не делается.
« Последнее редактирование: 12 Июня 2012, 01:26:31 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #12 : 12 Июня 2012, 17:58:26 »
в if-up или if-down скрипт приблизительно такого вида:
Такие вещи, пмсм, лучше делать через оператор выбора case.
OpenWrt 19.07

Оффлайн fet4

  • Автор темы
  • Любитель
  • *
  • Сообщений: 75
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #13 : 12 Июня 2012, 18:45:52 »
И все? на что это повлияет?
Например, сервис ifupdown может подумать, что произошел сбой при включении интерфейса, и прекратить запуск последующих скриптов.
Понятно.

[
fet4,
тестsudo wget victor2012.info/iface-script.txt -O /etc/network/if-up.d/iface-script
sudo chmod +x /etc/network/if-up.d/iface-script
sudo /etc/init.d/networking restart
Да-да, больше запускай всякие-разные неизвестные скрипты. Потом только не спрашивай, кто тебе сервер ломанул - ты же сам и лопухнулся...
Да ну, не совсем я еще:)

Естественно работает, в фоне. Если запустить просто с командной строки, то скрипт будет выводить каждые 10 сек инфу о состоянии каналов, так вот если канал через ppp переподключиться, то скрипт его уже не возвратит обратно в дефолт и думает что он лежит, т.к. меняются ip-адерса туннеля. По-этому и решил делать рестарт скрипту. Со статикой все окей.
Стрёмный скрипт. Я бы в cron его повесил, чем так вертеться.
Останавливать не надо, там ничего особенного не делается.
Выполнять каждую секунду ?

Пользователь решил продолжить мысль 12 Июня 2012, 18:46:31:
в if-up или if-down скрипт приблизительно такого вида:
Такие вещи, пмсм, лучше делать через оператор выбора case.
Это как?

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как правильно перезапускать скрипт?
« Ответ #14 : 12 Июня 2012, 18:51:33 »
fet4, уже не получаешь?

/etc/balance/check.sh можно посмотрю?
Wars ~.o

 

Страница сгенерирована за 0.058 секунд. Запросов: 26.