Я использую upstart для сервисов на своих серверах. Написание файла conf и размещение его в /etc/init
достаточно просто, но, похоже, это не совсем установка. Во-первых, service --status-all
не перечисляет мой новый сервис. Я проверил, и если я сделаю ссылку в /etc/init.d
- /lib/init/ubstart-job
, она появится в статусе. Но выполнение этого вручную заставляет меня думать, что я делаю это неправильно, и вполне могут быть другие этапы настройки, которые не выполняются.
Как правильно установить сервис upstart, чтобы он был надлежащим образом зарегистрирован во всех инструментах, связанных со службами?
Я обнаружил, что ошибка в файле .conf может сделать работу неузнаваемой для initctl. например, наличие строки setuid
в версии Upstart 1.3 или более ранней.
Хотя текущий выбранный ответ является правильным для добавления нового сервиса в 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
Когда вы изначально копируете новый файл conf в папку / etc / init, вам нужно позвонить:
initctl reload-configuration
Таким образом, ваш выскочка должен быть правильно зарегистрирован.
Убедитесь, что вы выполняете следующие шаги при добавлении / создании новой службы в Ubuntu.
/etc/init.d/<service name>
chmod 700 /etc/init.d/<service name>
update-rc.d <service name> defaults
update-rc.d <service name> enable
Теперь увидимся в сервисе в
service --status-all
Изучите руководство по обслуживанию:
service --status-all запускает все сценарии инициализации в алфавитном порядке с помощью команды состояния. Эта опция вызывает состояние только для заданий sysvinit, запросы на запуск вызываются аналогично списку initctl.
blockquote>(выделение выделено)
Вот почему добавление его в /etc/init.d (где находятся задания sysvinit) сделало эту работу. Итак: попробуйте вместо этого запустить список initctl :).