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

13

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 sont prêts torbot.pyà être +xet #!/usr/local/bin/pythonau sommet. Cependant, lorsque j'essaie de le démarrer, j'obtiens:

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

Suis-je en train de manquer quelque chose?

ctote
la source

Réponses:

4

Si vous utilisez ubuntu 16.04 ou une version plus récente, vous pouvez consulter le document de systemd sur la création de fichiers de service

Le script est destiné à l'ancien système d'initialisation et est géré par une couche de compatibilité héritée.

théiste
la source
2

Pour moi, j'utilise Ubuntu 16.04.

Changer d'abord la fonction init

. /etc/init.d/functions

à

. /lib/lsb/init-functions

Puis en shell, créez des liens symboliques depuis / etc / rc * vers mon script:

sudo update-rc.d <myapp> defaults 95
Leon Wolf
la source
Que signifie 95 ici?
Gherman
@Gherman c'est la priorité
turson
1

Ok, j'ai essayé certaines étapes de cette réponse stackoverflow ( Exécution du script upstart le 17.04? ) Et elles ont fonctionné Mon env est le suivant

  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.

Vous devez d'abord é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 leur équivalent dans (par le début) upstart 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 demandera d'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 foopour voir l'état sudo service foo stopd'arrêter le service

siddharthrc
la source
0

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

Pouvez-vous fournir la sortie fournie par ce guide afin que nous puissions vous aider à éventuellement déboguer votre problème?

Le clerc
la source
0

J'ai eu le même problème, c'est la solution qui a fonctionné pour moi. Essayer:

sudo systemctl daemon-reload

sudo systemctl enable daemon_app.service

sudo systemctl start daemon_app.service

Erol Kalkan
la source