Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2013 11:25:07

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Имеем вот такой вот скрипт http://pastebin.com/p84VSV5X . Каждые 60 секунд скрипт заходит на сервер проверяет MAC адреса и сбрасывает их , такая работа должна продолжаться постоянно. Но проблема в том что после запуска скрипта и отправки его в бекграунд python daemon4.py& скрипт работает пока я не закрою окно pytty после этих действий все останавливается , пробовал писать демон такая же проблема , скрипт работает от часа до шести и завершает работу без видимых причин , если запустить программу у себя на компьютере то все работает работает без нареканий проверял целые сутки . Может кто чего подскажет ?



Отредактировано Jeck290 (Сен. 20, 2013 11:25:28)

Офлайн

#2 Сен. 20, 2013 11:54:02

leechuck
От:
Зарегистрирован: 2010-11-30
Сообщения: 44
Репутация: +  1  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

запустите в скрине !
думаю, этот вариант Вам подойдет ! :)

screen
python daemon4.py
Cnrl-A
d



Офлайн

#3 Сен. 20, 2013 12:27:17

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Да действительно , помогло , работает , но в чем причина была ?



Офлайн

#4 Сен. 20, 2013 12:45:12

masterito
От:
Зарегистрирован: 2011-06-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

2 раза fork сделайте и получите демон.



Офлайн

#5 Сен. 21, 2013 13:52:49

Oik741
Зарегистрирован: 2013-01-06
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Jeck290
Да действительно , помогло , работает , но в чем причина была ?
Причина была в том что ваш скрипт стал “дочерним” процессом вашего “терминала”, после того как вы выходите с машины, процесс который обслуживал ваш терминал умирает, и все его дочернии процессы

screen'ом вы просто в качестве демона запускаете ваш терминал, с возможностью подключиться к нему в дальнейшем

например:
screen -AR
подключит вас к вашей прошлой сессии(при условии что она одна)

перманентным решением может быть добавление скрипта в /etc/init.d/ (пример для Debian'а, в других системах может быть подругому)
и написав
insserv SCRIPT_NAME
в таком случае родительским процессом вашего скрипта станет INIT(0-ой процесс в системе, который есть всегда)

либо вручную запустив скрипт таким образом:
nohup python my_daemon.py &
таким образом процесс будет игнорировать сигналы от родителя и превратится в зомби после его смерти
что черевато захламление системы процессами(т.к. зомби без родителя не может завершить свои цикл существования)

Отредактировано Oik741 (Сен. 21, 2013 14:19:23)

Офлайн

#6 Окт. 4, 2013 13:21:51

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

А я вот пользуюсь таким способом отправки в бекграунд:

echo "you/script/path.py" | at now
Для работы необходимо что б была установлен и запущена утилита atd (демон), но это добро практически всегда есть на nix. Работает после закрытия ssh. Плюс: можно эту же конструкцию встроить в bash/python скрипт.

Отредактировано agryn (Окт. 4, 2013 13:22:28)

Офлайн

#7 Окт. 4, 2013 13:34:15

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

как вариант http://supervisord.org/ или нет ?

Офлайн

#8 Окт. 17, 2013 07:08:18

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Попробовал решения которые вы предлагали , возникла одна проблема , если конект к серверу пропадает а это уже False то цикл While просто перестает работать , как можно зациклить цикл ?



Офлайн

#9 Окт. 18, 2013 00:27:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Jeck290
как можно зациклить цикл ?
правильный вопрос содержит половину ответа…а тут все 100%. намек ясен?



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Окт. 19, 2013 12:55:21

Jeck290
От:
Зарегистрирован: 2010-01-03
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Демон или скрипт на python закрываются в бекграунде.

Не совсем (( , может хоть намек ?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version