Upstart не возрождает демона

У меня есть демон, написанный на C, который использует вызов daemon().

Я хочу, чтобы выскочка возродила это, если оно неожиданно выйдет из строя.

Я использую довольно старую версию upstart, 0.3.9, на Ubuntu 8.04.

Я создал следующий файл (/etc/event.d/my-daemon):

start on startup
stop on shutdown
respawn
daemon
exec /usr/bin/my-daemon

Статус:

# status my-daemon
my-daemon (stop) waiting

Начинать:

# start my-daemon

my-daemon (start) waiting
my-daemon (start) starting
my-daemon (start) pre-start
my-daemon (start) spawned, process 32631
my-daemon (start) post-start
my-daemon (start) running

Это видно, когда я делаю ps aux | grep my-daemon, как и ожидалось. Затем я убиваю его, используя kill -9, ожидая, что он возродится, но повторный ввод ps aux ничего не показывает после этого. Выполняя status my-daemon, я получаю:

my-daemon (start) running

Любые идеи?


person tbh1    schedule 06.01.2012    source источник


Ответы (1)


Я не думаю, что 0.3.9 обрабатывает процессы демона должным образом (это как-то связано с ожиданием SIGCHLD). Обходной путь для меня состоял в том, чтобы просто не запускать/демонизировать процесс, и респаун работает.

person tbh1    schedule 09.01.2012