Правильный способ установить пользовательский сервис выскочки

Я использую upstart для сервисов на своих серверах. Написание файла conf и размещение его в /etc/init достаточно просто, но, похоже, это не совсем установка. Во-первых, service --status-all не перечисляет мой новый сервис. Я проверил, и если я сделаю ссылку в /etc/init.d - /lib/init/ubstart-job, она появится в статусе. Но выполнение этого вручную заставляет меня думать, что я делаю это неправильно, и вполне могут быть другие этапы настройки, которые не выполняются.

Как правильно установить сервис upstart, чтобы он был надлежащим образом зарегистрирован во всех инструментах, связанных со службами?

51
задан 24 May 2013 в 10:48

5 ответов

Я обнаружил, что ошибка в файле .conf может сделать работу неузнаваемой для initctl. например, наличие строки setuid в версии Upstart 1.3 или более ранней.

0
ответ дан 24 May 2013 в 10:48

Хотя текущий выбранный ответ является правильным для добавления нового сервиса в upstart, он не особенно полезен для выяснения ПОЧЕМУ не удается загрузить конфигурацию в / etc / init / - отсутствующий фрагмент сначала использует init-checkconf чтобы убедиться, что ваш конфиг действителен, а затем использовать reload-configuration:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
0
ответ дан 24 May 2013 в 10:48

Когда вы изначально копируете новый файл conf в папку / etc / init, вам нужно позвонить:

initctl reload-configuration

Таким образом, ваш выскочка должен быть правильно зарегистрирован.

0
ответ дан 24 May 2013 в 10:48

Для служб SysV

Убедитесь, что вы выполняете следующие шаги при добавлении / создании новой службы в Ubuntu.

  1. Создайте файл службы в /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

Теперь увидимся в сервисе в

service --status-all
0
ответ дан 24 May 2013 в 10:48

Изучите руководство по обслуживанию:

service --status-all запускает все сценарии инициализации в алфавитном порядке с помощью команды состояния. Эта опция вызывает состояние только для заданий sysvinit, запросы на запуск вызываются аналогично списку initctl.

(выделение выделено)

Вот почему добавление его в /etc/init.d (где находятся задания sysvinit) сделало эту работу. Итак: попробуйте вместо этого запустить список initctl :).

0
ответ дан 24 May 2013 в 10:48

Другие вопросы по тегам:

Похожие вопросы: