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.
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?
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.
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
Ok, eu tentei alguns passos esta resposta stackoverflow ( Executando script upstart em 17.04? ) e eles trabalharam Meu env é o seguinte
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
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?