[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: как демонизировать программу?



Denis Feklushkin -> debian-russian@lists.debian.org  @ Thu, 11 Feb 2010 01:06:38 +0700:

 >> > > Есть клон: runit (http://smarden.org/runit/,естьврепе;). Мне
 >> > > кажется более удобным.
 >> > > 
 >> > > ИМХО, daemontools и runit -- наиболее подходящие решения.
 >> > 
 >> > Поддерживаю. Активно использую в продакшене, очень удобно - 
 >> > возможность для пользователей запускать собственный экземпляр
 >> > супервизора (с правами пользователя) решает множество проблем,
 >> > в т.ч. безопасности (рутовые права теперь не нужны).
 >> 
 >> Это про какую из предложенных?
 >> 
 >> У меня на daemontools вот проблема вылезла какая - в лог не пишется
 >> весь STDIN, сгенерированный сервисом, только часть.
 >> 

 DF> Проблема оказалась такая.
 DF> "Демон" написан на питоне и вызывает другие программы вот таким кодом внутри себя:

 DF>                     p = Popen( res[1], shell = True, stdin=PIPE )
 DF>                     p.stdin.write( res[2] )
 DF>                     p.stdin.close()
 DF>                     p.wait()

 DF> если этот код закомментировать то всё ок и такой код в ./run
 DF> отлично с ним работает:

 DF> =========
 DF> $ cat /etc/service/dhcs-daemon/run 
 DF> #!/bin/sh

 DF> set -ex

 DF> exec 2>&1

 DF> exec chpst -v -u dhcs-daemon /opt/dhcs/queue-daemon.py "dbname=dhcs-new" "5"
 DF> =========

 DF> если же приведённый вначале питоновский код оставить то после exec
 DF> (он заменяет shell на свои аргументы, да?) питоновый stdin теряется
 DF> неизвестно где и не попадает в логи

 DF> причём, если запустить exec /etc/service/dhcs-daemon/run в консоли
 DF> то ничего не теряется, полный вывод питона наблюдается в консоли и
 DF> вывод этот идёт в дескриптор stdout

 DF> питон на помойку?

Или так.  А вообще, вероятно, достаточно объяснить автору скрипта, что
между выводом в stdout и exec иногда нехило бы сделать flush...

Заодно и сам узнаешь.

-- 
Правки Белявского, сделанные им в рабочей копии головы
 -- Из коммитлога.


Reply to: