Nie udało się uruchomić <mojaapp>. Usługa: Nie znaleziono jednostki <moja aplikacja>. Usługa


13

Stworzyłem super podstawowy skrypt init.d dla mojego bota 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

I ustaliły torbot.pysię +xi #!/usr/local/bin/pythonna szczycie. Kiedy jednak próbuję go uruchomić, otrzymuję:

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

Czy coś brakuje?

Odpowiedzi:


4

Jeśli używasz systemu Ubuntu 16.04 lub nowszego, możesz przejrzeć dokumentację systemd na temat tworzenia plików serwisowych

Skrypt jest przeznaczony dla starego systemu init i jest zarządzany przez starszą warstwę zgodności.


2

Dla mnie używam Ubuntu 16.04.

Najpierw zmień funkcję init

. /etc/init.d/functions

do

. /lib/lsb/init-functions

Następnie w powłoce utwórz dowiązania symboliczne z / etc / rc * do mojego skryptu:

sudo update-rc.d <myapp> defaults 95

Co znaczy tutaj 95?
Gherman,

@Gherman to priorytet
turson

1

Ok, próbowałem kilka kroków, odpowiedź ta przepełnienie stosu ( Uruchamianie skryptu upstart 17.04? ) I zadziałały Moja env jest następująca

  1. Ubuntu o 17.10
  2. Mam aplikację python na serwerze Gunicorn 19.x, muszę uruchomić tę aplikację jako usługę.

Najpierw musisz napisać plik 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

Znaczenie każdego słowa po lewej stronie znaku „=” i jego odpowiednika w (wcześniejszym) upstart znajduje się w linku https://wiki.ubuntu.com/SystemdForUpstartUsers

Gdy plik będzie gotowy, powiedzmy, że nazywasz go „foo.service” (rozszerzenie .service jest ważne)

Musisz umieścić plik w /lib/systemd/system

Następnie musisz włączyć usługę, dzwoniąc

systemctl enable foo

Co spowoduje wyświetlenie monitu o podanie hasła roota podczas tworzenia dowiązań symbolicznych.

Jeśli dotarłeś do tego miejsca bez żadnych problemów, jesteś dobry. Twoja usługa została utworzona. Rozpocznij przez telefon

sudo service foo start

systemctl status fooaby zobaczyć status sudo service foo stopzatrzymania usługi



0

Miałem ten sam problem, oto rozwiązanie, które działało dla mnie. Próbować:

sudo systemctl daemon-reload

sudo systemctl enable daemon_app.service

sudo systemctl start daemon_app.service

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.