В контексте сценариев инициализации, согласно спецификация 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 может быть хорошим примером этого.
Лично я считаю совет ридми ужасным, граничащим с криминальным. У нас есть стандарт; если все будут его придерживаться, программное обеспечение станет более портативным, и это хорошо. Совет людям не использовать стандартные пропуска для возможности сделать мир лучше.