systemctl не распознает мой сервис: Default-Start не содержит уровней запуска, прерывание

14

Я хочу определить простой сервис, который будет запускаться при загрузке, находясь на сервере Ubuntu 16.10. Итак, я создал/etc/init.d/mydaemon

Я как-то напутал между upstart и systemd: сначала я подумал, что должен настроить службу upstart. Так что после преобразования моего файла в синтаксис upstart я запустился update-rc.d mydaemon defaults.

Я разобрался в своей ошибке и запустился update-rc.d mydaemon remove, преобразовал ее в системный синтаксис и запустил systemctl enable mydaemon, но получил ошибку:

mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.
CharlesB
источник

Ответы:

15

У меня была такая же ошибка при переносе скрипта sysv из redhat box в ubuntu. Мне нужно было добавить несколько заголовков в скрипт

### BEGIN INIT INFO
# Provides:          my-service-name
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: your description here
### END INIT INFO

находится в /ubuntu/909523/default-start-contains-no-runlevels-aborting

Ник Фокс
источник
см. также wiki.debian.org/LSBInitScripts
Ник Фокс,
1
В моем сценарии уже есть этот читатель, но он все еще показывает ту же ошибку .. = [
Лучано Андресс Мартини
спас мой день :-) Большое спасибо
Aravinthan K
11

Проблема заключалась в том, что местоположение файла на сервере Ubuntu, в котором он его ожидает /etc/systemd/system, /etc/init.d/относится к устаревшим файлам.

CharlesB
источник
это решение исправило мою службу
Амир Хоссейн Резаи
Я думаю, что это решение не работает, если скрипт init является скриптом bash. Вместо того, чтобы копировать файл, параметры на уровнях выполнения должны быть добавлены в качестве комментариев, как никнейм лиса, размещенный в их ответе.
LaTechneuse
Конечно, первоначальный вопрос касается .serviceфайла, а не сценария инициализации bash.
CharlesB
7

Просто добавлю к ответу @CharlesB - когда я попал в это состояние, я смог просто переместить файл из и /etc/init.d/снова /etc/systemd/system/запустить команду, и она работала правильно:

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon
Cory
источник
1
Это должен быть комментарий.
Джеральд Шнайдер
Я думаю, что за ответом легче следовать, поэтому сделал его одним.
Кори
0

У меня была та же ошибка, и я исправил ее, добавив начальную информацию по умолчанию, как показано ниже:

vi /etc/init.d/greenbone-security-assistant

Меняться от:

# Default-Start:

чтобы:

# Default-Start: 2 3 4 5

: WQ

root @ kali: /etc/init.d# systemctl включить greenbone-security-assistant

Синхронизация состояния greenbone-security-assistant.service с помощью служебного сценария SysV с помощью / lib / systemd / systemd-sysv-install.

Выполнение: / lib / systemd / systemd-sysv-install включить greenbone-security-assistant

Фернандо Гальвес
источник