Impossibile avviare <myapp> .service: unità <myapp> .service non trovata


13

Ho creato uno script init.d di base per il mio 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

E hanno impostato torbot.pyper essere +xe #!/usr/local/bin/pythonin cima. Quando provo ad avviarlo effettivamente, ottengo:

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

Mi sto perdendo qualcosa?

Risposte:


4

Se stai usando Ubuntu 16.04 o più recente, potresti voler rivedere il documento di systemd sulla creazione di file di servizio

Lo script è per il vecchio sistema init ed è gestito da un livello di compatibilità legacy.


2

Per me sto usando Ubuntu 16.04.

Innanzitutto cambia la funzione init

. /etc/init.d/functions

per

. /lib/lsb/init-functions

Quindi nella shell, creare collegamenti simbolici da / etc / rc * al mio script:

sudo update-rc.d <myapp> defaults 95

Cosa significa 95 qui?
Gherman,

@Gherman è una priorità
turson

1

Ok, ho provato alcuni passaggi questa risposta stackoverflow ( esecuzione dello script upstart su 17.04? ) E hanno funzionato La mia env è la seguente

  1. Ubuntu alle 17.10
  2. Ho un'app Python sul server Gunicorn 19.x, devo avviare questa applicazione come servizio.

Innanzitutto devi scrivere un file 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

Il significato di ogni parola sul lato sinistro del segno '=' e il loro equivalente in (al precedente) upstart è nel link https://wiki.ubuntu.com/SystemdForUpstartUsers

Una volta che il file è pronto, supponiamo che tu lo chiami come 'foo.service' (l'estensione .service è importante)

Devi inserire il file /lib/systemd/system

Dopodiché devi abilitare il servizio chiamando

systemctl enable foo

Il che ti chiederà di inserire la password di root in quanto creerà collegamenti simbolici.

Se hai raggiunto fino a qui senza problemi, sei bravo. Il tuo servizio è quindi creato Inizia è chiamando

sudo service foo start

systemctl status fooper vedere lo stato sudo service foo stopper interrompere il servizio



0

Ho avuto lo stesso problema, questa è la soluzione che ha funzionato per me. Provare:

sudo systemctl daemon-reload

sudo systemctl abilita daemon_app.service

sudo systemctl avvia daemon_app.service

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.