Итак, кто должен демонизировать? Скрипт или звонилка? - PullRequest
1 голос
/ 24 сентября 2008

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

Есть какой-нибудь окончательный ответ?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2008

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

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

1 голос
/ 24 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...