systemctl ne reconnaît pas mon service: Default-Start ne contient aucun niveau d'exécution, abandon

13

Je veux définir un service simple à démarrer au démarrage, étant sur le serveur Ubuntu 16.10. J'ai donc créé un/etc/init.d/mydaemon

J'ai en quelque sorte gâché entre upstart et systemd: au début, je pensais que je devais configurer un service upstart. Donc, après avoir converti mon fichier en une syntaxe parvenue, j'ai couru update-rc.d mydaemon defaults.

J'ai compris mon erreur et j'ai couru update-rc.d mydaemon remove, converti en syntaxe systemd et j'ai couru systemctl enable mydaemon, mais obtenez l'erreur:

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
la source

Réponses:

14

J'ai eu la même erreur lors du portage d'un script sysv d'une boîte redhat vers ubuntu. Je devais ajouter quelques en-têtes au script

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

trouvé dans /ubuntu/909523/default-start-contains-no-runlevels-aborting

nick fox
la source
voir aussi wiki.debian.org/LSBInitScripts
nick fox
1
Mon script a déjà ce lecteur mais affiche toujours exactement la même erreur .. = [
Luciano Andress Martini
sauvé ma journée :-) Merci beaucoup
Aravinthan K
11

Le problème était l'emplacement du fichier, sur le serveur Ubuntu dans lequel il l'attend /etc/systemd/system, /etc/init.d/est pour les fichiers hérités.

CharlesB
la source
cette solution a corrigé mon service
AmirHossein Rezaei
Je pense que cette solution ne fonctionne pas si le script init est un script bash. Au lieu de copier le fichier, les paramètres sur les niveaux d'exécution doivent être ajoutés en tant que commentaires que nick fox a posté dans leur réponse.
LaTechneuse
Bien sûr, la question initiale est sur un .servicefichier, pas sur un script d'init bash.
CharlesB
7

Il suffit d'ajouter à la réponse de @CharlesB - quand je suis entré dans cet état , j'ai pu déplacer simplement le fichier à partir /etc/init.d/de /etc/systemd/system/et exécutez à nouveau la commande et cela a fonctionné correctement:

sudo mv /etc/init.d/mydaemon /etc/systemd/system/
sudo systemctl enable mydaemon
Cory
la source
1
Cela devrait être un commentaire.
Gerald Schneider
Je pense que c'est une réponse plus facile à suivre, alors faites-en une.
Cory
0

J'ai eu la même erreur et je l'ai corrigée en mettant les informations de démarrage par défaut, comme suit:

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

Changer de:

# Default-Start:

à:

# Default-Start: 2 3 4 5

: wq

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

Synchronisation de l'état de greenbone-security-assistant.service avec le script de service SysV avec / lib / systemd / systemd-sysv-install.

Exécution: / lib / systemd / systemd-sysv-install activer greenbone-security-assistant

Fernando Galves
la source