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: