systemctl nie rozpoznaje mojej usługi: Default-Start nie zawiera poziomów pracy, przerywanie

15

Chcę zdefiniować prostą usługę, która będzie uruchamiana podczas rozruchu, będąc na serwerze Ubuntu 16.10. Więc stworzyłem/etc/init.d/mydaemon

Jakoś pomieszałem między upstart i systemd: na początku myślałem, że muszę skonfigurować usługę upstart. Więc po przekonwertowaniu mojego pliku na składnię wstępną uruchomiłem update-rc.d mydaemon defaults.

Zrozumiałem swój błąd i uruchomiłem update-rc.d mydaemon remove, przekonwertowałem na składnię systemową i uruchomiłem systemctl enable mydaemon, ale dostaję błąd:

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
źródło

Odpowiedzi:

16

Miałem ten sam błąd podczas przenoszenia skryptu sysv z redhat box na Ubuntu. Musiałem dodać kilka nagłówków do skryptu

### 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

znalezione w /ubuntu/909523/default-start-contains-no-runlevels-aborting

nick lis
źródło
patrz także wiki.debian.org/LSBInitScripts
nick lis
1
Mój skrypt ma już tego czytnika, ale wciąż pokazuje dokładnie ten sam błąd .. = [
Luciano Andress Martini
uratował mi dzień :-) Wielkie dzięki
Aravinthan K
11

Problem polegał na tym, że lokalizacja pliku, na serwerze Ubuntu, w którym się go spodziewa /etc/systemd/system, /etc/init.d/dotyczy starszych plików.

CharlesB
źródło
to rozwiązanie naprawiło moją usługę
AmirHossein Rezaei
Myślę, że to rozwiązanie nie działa, jeśli skrypt init jest skryptem bash. Zamiast kopiować plik, parametry na poziomach uruchamiania muszą zostać dodane jako komentarze, jak podał Nick Fox w swojej odpowiedzi.
LaTechneuse,
Jasne, początkowe pytanie dotyczy .servicepliku, a nie skryptu inicjującego bash.
CharlesB
7

Wystarczy dodać do odpowiedzi z @CharlesB - kiedy mam do tego stanu udało mi się po prostu przenieść plik od /etc/init.d/celu /etc/systemd/system/i uruchom polecenie i to działało poprawnie:

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon
Cory
źródło
1
To powinien być komentarz.
Gerald Schneider,
Myślę, że łatwiej jest podążać za odpowiedzią, więc uczyniłem to jednym.
Cory,
0

Miałem ten sam błąd i naprawiłem go, wprowadzając domyślne informacje startowe, jak następuje:

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

Zmień z:

# Default-Start:

do:

# Default-Start: 2 3 4 5

: wq

root @ kali: /etc/init.d# systemctl enable greenbone-security-assistant

Synchronizacja stanu usługi greenbone-security-assistant.service ze skryptem usługi SysV z / lib / systemd / systemd-sysv-install.

Wykonywanie: / lib / systemd / systemd-sysv-install enable greenbone-security-assistant

Fernando Galves
źródło