Как настроить скрипт init.d rc для проекта Daemon-kit? - PullRequest
3 голосов
/ 04 марта 2011

Я использую Ruby Daemon-kit для настройки сервисов, которые выполняют различные фоновые операции для моего приложения Rails.

Хорошо работает, когда я звоню по командной строке:

./bin/bgservice

Как мне создать сценарий запуска демона initd для него, чтобы он автоматически запускался при перезагрузке?

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Существует несколько подходов:

  1. Вы можете написать /etc/init.d/ сценариев, которые могут быть помещены в каталоги /etc/rc?.d/ (или где бы они ни находились в ваших целевых дистрибутивах).Некоторые подробности об этом механизме можно найти в Руководствах политики Debian и учебник initscript openSUSE .Существует раздражающее количество специфических для дистрибутивов идиосинкразий в начальных сценариях, поэтому не думайте о том, чтобы написать простой и попросить дистрибутивы внести «лучшие», адаптированные для их среды.(Например, любой производный от Debian дистрибутив предоставит чрезвычайно полезный помощник start-stop-daemon(8), но его очень не хватает в других дистрибутивах.)

  2. Вы можете написать upstart спецификации заданий длядистрибутивы, которые поддерживают upstart (я думаю, что это Ubuntu, Google ChromeOS, Fedora, ... еще?).upstart документация все еще довольно слабая, но есть некоторые подробности и множество примеров в /etc/init/ в Ubuntu, вероятно, такое же расположение в других дистрибутивах, которые используют upstart.Исправление зависимостей может быть трудоемким во всех дистрибутивах, но upstart спецификации заданий выглядят гораздо проще в написании и обслуживании, чем initscripts.

  3. Вы можете добавить строки/etc/inittab в дистрибутивах, которые все еще поддерживают стандартный файл SysV-init inittab(5).Это может быть полезно, только если ваша программа не выполняет обычное заклинание fork(2) / setsid(2) / fork(2), так как init использует pid , который получает из fork(2), чтобы определить,Ваша программа должна быть перезапущена.

  4. Modern Vixie cron(8) поддерживает спецификатор @reboot в crontab(5) файлах.Это может использоваться как системным crontab, так и пользовательским crontabs, что может быть полезно, если вы просто хотите запускать программу под своей обычной учетной записью.

0 голосов
/ 15 марта 2011

Как автор daemon-kit, я избегал создания сценариев в стиле init из-за того, что справлялся с различными дистрибутивами, и они переходили от старого стиля init-V к более новому upstart / insserv, спасая меня от кошмара.

Как я рекомендую это сделать, это использовать генератор конфигурации бога и убедиться, что бог запускается при загрузке (с помощью runit или каким-либо другим способом), и бог изначально запускает демона и поддерживает его работу.

В лучшем случае я расширю daemon-kit, чтобы можно было генерировать сценарии runit для загрузки ...

НТН.

...