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

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



On Wed, 10 Feb 2010 14:54:49 +0300
Alexey Pechnikov <pechnikov@mobigroup.ru> wrote:

> Hello!
> 
> On Wednesday 10 February 2010 10:22:03 Roman S. Gushcha wrote:
> > Есть клон: runit (http://smarden.org/runit/,естьврепе;). Мне кажется
> > более удобным.
> > 
> > ИМХО, daemontools и runit -- наиболее подходящие решения.
> 
> Поддерживаю. Активно использую в продакшене, очень удобно - 
> возможность для пользователей запускать собственный экземпляр
> супервизора (с правами пользователя) решает множество проблем,
> в т.ч. безопасности (рутовые права теперь не нужны).

Это про какую из предложенных?

У меня на daemontools вот проблема вылезла какая - в лог не пишется весь STDIN, сгенерированный сервисом, только часть.

Вот пример того что выдаёт программа запущенная просто в консоли, нормальный её вывод:

# setuidgid dhcs-daemon /opt/dhcs/queue-daemon.py "dbname=dhcs-new" 3
Command: cat; sleep 5 attempt: 1
Command: cat; sleep 5 attempt: 1
gid:1026
Command: cat; sleep 5 attempt: 1
Command: cat; sleep 5 attempt: 1
Command: cat; sleep 5 attempt: 1
Command: cat; sleep 5 attempt: 1
Command: ssh db touch /tmp/95-ono.txt attempt: 1
Warning: Permanently added 'db,192.168.1.75' (RSA) to the list of known
hosts.

А вот та же программа, лог через daemontools (multilog):

=================
@400000004b72b99121efeb6c Warning: Permanently added 'db,192.168.1.75' (RSA) to the list of known hosts.
=================

Всё! stdin куда-то пропал!

Иногда, правда, пишется ещё:

=================
@400000004b721825000689d4 ^@gid:1026
=================

Но никогда не пишется "Command: cat; sleep 5 attempt: 1"


Вот такими скриптами запускаю из daemontools этот сервис:

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

exec 2>&1

exec setuidgid dhcs-daemon /opt/dhcs/queue-daemon.py "dbname=dhcs-new" 3
=================


=================
$ cat /etc/service/dhcs-daemon/log/run 

#!/bin/sh

exec 2>&1
exec multilog t /var/log/dhcs-daemon
=================


Reply to: