web-dev-qa-db-fra.com

Impossible de démarrer <myapp> .service: Unité <myapp> .service introuvable

J'ai créé un script init.d super basique pour mon bot python:

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    echo "starting torbot"
    python /home/ctote/dev/slackbots/torbot/torbot.py
    # example: daemon program_name &
}

stop() {
    # code to stop app comes here
    # example: killproc program_name
}

case "$1" in
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

Et définissez torbot.py sur +x et #!/usr/local/bin/python en haut. Quand j'essaye de le démarrer, je reçois:

:/var/lock/subsys$ Sudo service torbot start Failed to start torbot.service: Unit torbot.service not found.

Est-ce que je manque quelque chose?

12
ctote

Si vous utilisez Ubuntu 16.04 ou une version plus récente, vous pouvez consulter la documentation de systemd à propos de création de fichiers de service

Le script concerne l'ancien système init et est géré par une couche de compatibilité héritée.

4
theist

Pour moi, j'utilise Ubuntu 16.04.

Tout d'abord changer la fonction init

. /etc/init.d/functions

à

. /lib/lsb/init-functions

Ensuite, dans Shell, créez des liens symboliques de/etc/rc * vers mon script:

Sudo update-rc.d <myapp> defaults 95
2
Leon Wolf

Ok, j'ai essayé quelques étapes cette réponse stackoverflow ( Exécution du script upstart sur 17.04? ) et ils ont travaillé Mon env est comme suit

  1. Ubuntu à 17h10
  2. J'ai une application python sur le serveur Gunicorn 19.x, je dois démarrer cette application en tant que service.

Tout d'abord, vous devez écrire un fichier foo.service.

[Unit] 
Description=FooServer 

[Service] 
Restart=on-failure
WorkingDirectory=/path/to/your/working/directory/where the foo lives
ExecStart=/what/process/will call foo eg: in my case I used gunicorn app:app
ExecReload=/bin/kill -HUP $MAINPID 
KillSignal=SIGINT 

[Install] 
WantedBy=multi-user.target

La signification de chaque mot sur le côté gauche du signe '=' et de leur équivalent dans la version précédente est dans le lien https://wiki.ubuntu.com/SystemdForUpstartUsers

Une fois le fichier prêt, disons que vous le nommez 'foo.service' (l’extension .service est importante)

Vous devez placer le fichier dans /lib/systemd/system

Après quoi, vous devez activer le service en appelant

systemctl enable foo

Ce qui vous invitera à entrer votre mot de passe root car il créera des liens symboliques.

Si vous avez atteint jusqu'ici sans tracas, vous êtes bon. Votre service est donc créé Commencez par appeler

Sudo service foo start

systemctl status foo pour voir le statut Sudo service foo stop pour arrêter le service

1
siddharthrc

Avez-vous fatigué quelque chose comme ça? Comment déboguer les scripts Upstart?

Pouvez-vous fournir les résultats de ce guide afin que nous puissions vous aider à potentiellement déboguer votre problème?

0
The Cleric