Правильний спосіб встановити користувальницьку послугу для запуску


51

Я використовую випускний сервіс для служб на своїх серверах. Написати конф-файл та розмістити його /etc/initдосить просто, але це, здається, не повністю встановлено. Для одного, у service --status-allмоїй новій службі не вказано. Я перевірив, і якщо я буду робити посилання /etc/init.dна /lib/init/ubstart-jobнього, з’явиться статус. Але якщо зробити це вручну, я змушую думати, що я не роблю це правильно, і, можливо, можуть бути й інші кроки налаштування, які не робляться.

Який правильний спосіб встановити послугу для запуску, щоб вона була належним чином зареєстрована у всіх інструментах, що стосуються послуг?


2
Цей хлопець відповів на одне з моїх запитань, використовуючи послугу на початку, і дав детальне пояснення, він може вказати на крок, який, можливо, був пропущений askubuntu.com/a/278128/75967
Meer Borg

1
Ви мали на увазі /lib/init/upstart-job?
сміливо

Відповіді:


46

Коли ви спочатку копіюєте новий конф-файл у папку / etc / init, вам потрібно зателефонувати:

initctl reload-configuration

Цим ваша старта повинна бути належним чином зареєстрована.


8
Таким чином, це правильно налаштовує роботу (тобто, startі stopроботу), але це не робить роботу відображатись у статусі все. Мені довелося вручну додати це, щоб /etc/init.d/це сталося.
Джеймс Макмахон

1
@JamesMcMahon Вам потрібно запустити initctl listкоманду з sudo : sudo initctl list. Таким чином ви побачите повний перелік послуг.
Шахріяр Іманов

Чому судо, це, здається, зовсім не змінює вихід списку initctl.
Любить

@JamesMcMahon, I still had to manually add it to /etc/init.d. Вам ще довелося додати що? Це означає, що окрім X.confфайлу, який додається, до /etc/initнього також потрібно додати файл /etc/init.d?
Кевін Мередіт

@KevinMeredith, Вибачте, я не був більш детальним. Минуло 2 роки, і я не пам'ятаю конкретики. Якщо ви подивитеся на деяку документацію init.d, це, мабуть, буде зрозуміло.
Джеймс Макмахон

18

Ознайомтесь із сервісною інструкцією:

service --status-all запускає всі скрипти init в алфавітному порядку з командою status. Ця опція викликає статус лише для завдань sysvinit, а для початкових завдань можна запитувати аналогічно як initctl list.

(наголос додано)

Ось чому додавання його до /etc/init.d (там, де розташовані завдання sysvinit) зробило цю роботу. Отже: спробуйте запустити список initctl замість цього :).


That's why adding it Додавання чого? Окрім my_service.confфайлу в /etc/init, також потрібно мати /etc/init.dфайл?
Кевін Мередіт

Не працює з Ubuntu 16.04.4 LTS \\ $ initctl список initctl: Ім'я "com.ubuntu.Upstart" не існує $ sudo initctl список initctl: Неможливо підключитися до Upstart: Не вдалося підключитися до socket / com / ubuntu / upstart: Підключення відмовлено
дев'ять п'яти

13

Для служб 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

15
Ваша відповідь стосується sysv, а не прискореного запуску. ви можете видалити його.
jcomeau_ictx

3
Це дійсно корисна відповідь.
Аторрас

хоча це стосується ще однієї серіави, вона справді корисна
wuppi

1

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


1

Хоча поточна обрана відповідь правильна для того, щоб нова послуга була додана до запуску, це не особливо корисно для з'ясування ЧОМУ конфігурація в / etc / init / не завантажується - відсутня частина спочатку використовує init-checkconf, щоб переконатися ваш конфігурація дійсна, а потім використовуйте перезавантаження-конфігурацію:

####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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.