Falha ao iniciar myapp.service: Unit myapp.service não encontrado

10

Eu criei um script init.d super básico para o meu 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 definiu torbot.py como +x e #!/usr/local/bin/python na parte superior. Quando eu tento realmente começar, eu fico:

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

Estou sentindo falta de algo?

    
por ctote 08.03.2017 / 23:27

4 respostas

3

Se você está usando o ubuntu 16.04 ou mais recente, você pode querer rever o documento do systemd sobre criando arquivos de serviço

O script é para o sistema init antigo e é gerenciado por uma camada de compatibilidade legada.

    
por theist 17.03.2017 / 10:13
2

Para mim, estou usando o Ubuntu 16.04.

Primeiramente, mude a função init

. /etc/init.d/functions

para

. /lib/lsb/init-functions

Em seguida, no shell, crie links simbólicos de / etc / rc * para o meu script:

sudo update-rc.d <myapp> defaults 95
    
por Leon Wolf 14.03.2017 / 13:23
1

Ok, eu tentei alguns passos esta resposta stackoverflow ( Executando script upstart em 17.04? ) e eles trabalharam Meu env é o seguinte

  1. Ubuntu às 17.10
  2. Eu tenho um aplicativo python no servidor Gunicorn 19.x, preciso iniciar esse aplicativo como um serviço.

Primeiramente, você precisa escrever um arquivo 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

O significado de cada palavra no lado esquerdo do sinal '=' e seu equivalente em (para o anterior) está no link link

Quando o arquivo estiver pronto, digamos que você o nomeie como 'foo.service' (a extensão .service é importante)

Você precisa colocar o arquivo em /lib/systemd/system

Depois disso, você precisa ativar o serviço chamando

systemctl enable foo

O qual solicitará que você digite sua senha de root, pois ela criará links simbólicos.

Se você chegou até aqui sem qualquer aborrecimento, você é bom. Seu serviço é, portanto, criado O começo é chamando

sudo service foo start

systemctl status foo para ver o status sudo service foo stop para parar o serviço

    
por sidd.rc 27.02.2018 / 21:02
0

Você está cansado de algo assim? Como depurar scripts do Upstart?

Você pode fornecer a saída fornecida por este guia para que possamos ajudá-lo a depurar seu problema?

    
por The Cleric 09.03.2017 / 02:01