2008-09-24 6 views
1

Мне всегда интересно, кто это должен делать. В Ruby у нас есть библиотека Daemons, которая позволяет сценариям Ruby самостоятельно демонамизировать. И затем, глядя на God (инструмент мониторинга процесса, аналогичный monit), я вижу, что Бог может демонизировать процессы.Итак, кто должен демонировать? Сценарий или вызывающий?

Любой окончательный ответ там?

ответ

2

Вероятно, вы не можете получить окончательный ответ, так как мы, как правило, в конечном итоге оба: процесс имеет способность демонамизировать себя, а монитор процесса имеет возможность демонтировать своих детей.

Лично я предпочитаю, чтобы процесс монитор или сценарий сделать это, по нескольким причинам:
1. Если монитор процесса Желающих внимательно следить за своими детьми, чтобы перезапустить их, если они умирают, он может выбрать, чтобы не демон их , SIGCHLD будет доставлен на монитор, когда выйдет один из его дочерних процессов. Во встроенных системах мы делаем это много.
2. Как правило, при демонализации вы также устанавливаете euid и egid. Я предпочитаю не кодировать в каждый дочерний процесс знание политики на системном уровне, как uids для использования.
3. Это позволяет повторно использовать одно приложение как инструмент командной строки или демон (я свободно признаю, что это редко случается на практике).

1

Я бы сказал, что это лучше для вашего скрипта. Я не знаю вашего инструмента мониторинга процесса там, но я думаю, что пользователи могут потенциально использовать альтернативный инструмент, а это значит, что наличие скрипта будет предпочтительным.

Если вы можете представить сценарий, запущенный не-демоном, я бы добавил к сценарию возможность включить или отключить демонзацию.