Уведомления

Группа в Telegram: @pythonsu

#1 Май 7, 2013 23:00:11

bezrukov Ilya
От:
Зарегистрирован: 2010-11-21
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск subprocess из демонизорованного скрипта. Получаю зомби процесс.

Приветсвую.

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

демонизирую процесс по рецепту http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

в метод run() добавил вызов долгоживущего процесс (wget)
def run(self):
…….
self.proc = subprocess.Popen()
…….
Вывод ps ux| grep wget
5416 … python run_wget.py
5417 … <defunct>



Офлайн

#2 Май 8, 2013 01:14:24

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

запуск subprocess из демонизорованного скрипта. Получаю зомби процесс.

обратите внимание на аргументы Popen, в частности на close_fd. К тому же вы отдельно проверьте корректно ли работает вызов Popen, а то subprocess не такая простая штука, как хотелось бы.



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

Офлайн

#3 Май 8, 2013 13:40:43

bezrukov Ilya
От:
Зарегистрирован: 2010-11-21
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск subprocess из демонизорованного скрипта. Получаю зомби процесс.

Спасибо JOHN_16,

посмотрю вашу статью, без демонизации все работало(процесс запускался, лог читался, инфа в БД записывалась) - попробую по-экспериментировать с shell, close_fd и другими ключами.



Офлайн

#4 Май 8, 2013 15:12:58

bezrukov Ilya
От:
Зарегистрирован: 2010-11-21
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

запуск subprocess из демонизорованного скрипта. Получаю зомби процесс.

Заработало при добавленом аргументе cwd='path/to/', больше ни чего не добавлял. Надеюсь дальше эксцессов не встретится)


self.proc = subprocess.Popen(["wget", "-c", "-o%s"%self.wget_log , "--limit-rate=50M",  "ftp://%s/%s"%(self.obs_ip, os.path.join(self.path, self.session_name, self.scan_name))], cwd="/tmp", stdout=subprocess.PIPE, stderr=subprocess.PIPE)



Отредактировано bezrukov Ilya (Май 8, 2013 15:15:38)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version