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