Назад | Перейти на главную страницу

Действительно ли функция сценария инициализации LSB start_daemon используется для реальных демонов или мне следует придерживаться start-stop-daemon?

В контексте сценариев инициализации, согласно спецификация LSB, «Каждый соответствующий сценарий инициализации должен выполнять команды в файле / lib / lsb / init-function», который затем определяет пару функций, которые будут использоваться при использовании демонов. Одна из этих функций - start_daemon, который, очевидно, «запускает указанную программу как демон» при проверке того, запущен ли уже демон.

Я нахожусь в процессе демонизации своего сервисного приложения и смотрю, как запускаются другие демоны, чтобы попытаться «вписаться». Изучая, как это делается в других местах, я заметил, что ни один демон на моей машине с Ubuntu 10.04 не использует start_daemon. Все они напрямую вызывают start-stop-daemon. То же самое и с моей машиной Fedora 14. Стоит ли мне пытаться вести себя хорошо и первым использовать start_daemon, или действительно нет смысла и start-stop-daemon - это выход, поскольку все уже используют это? Почему нет демонов, использующих функции LSB?

В моей системе большинство скриптов используют start-stop-daemon, но два, exim4 и incron использовать start-daemon.

Если вы хотите писать сценарии для переносимости и соответствия LSB, используйте start_daemon. В Ubuntu он реализован как простая оболочка для start-stop-daemon.

Если вам нужна детализация аргумента, предоставляемая start-stop-daemon, используй это.

В Debian (ну, Ubuntu) lsb-base в пакете есть файл readme (в /usr/share/doc/lsb-base/README.Debian.gz) который говорит:

Примечание: пакеты Debian, вероятно, должны использовать start-stop-daemon напрямую; однако эти функции могут быть полезны при переносе сценариев инициализации из других дистрибутивов.

Итак, программное обеспечение, упакованное специально для Debian, обычно использует start-stop-daemon. Я могу представить, что программное обеспечение, перенесенное из другой системы, может использовать start_daemon, хотя, если другая система имеет аналогичную политику, программное обеспечение не будет использовать start_daemon во-первых, так что портировать его с помощью start_daemon чем start-stop-daemon. Я также могу представить, что программное обеспечение, которое упаковано для многих систем, может использовать start_daemon, чтобы включить переносимый сценарий инициализации. Exim может быть хорошим примером этого.

Лично я считаю совет ридми ужасным, граничащим с криминальным. У нас есть стандарт; если все будут его придерживаться, программное обеспечение станет более портативным, и это хорошо. Совет людям не использовать стандартные пропуска для возможности сделать мир лучше.