Не вдалося запустити <myapp> .service: Блок <myapp> .service не знайдено


13

Я створив супер базовий скрипт init.d для мого бота 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

І поставили torbot.pyбути +xі #!/usr/local/bin/pythonна самому верху. Коли я намагаюся фактично її запустити, я отримую:

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

Я щось пропускаю?

Відповіді:


4

Якщо ви використовуєте ubuntu 16.04 або новішої версії, ви можете переглянути документ про створення системних файлів

Сценарій призначений для старої системи init і керується застарілим шаром сумісності.


2

Для мене я використовую Ubuntu 16.04.

По-перше, змінити функцію init

. /etc/init.d/functions

до

. /lib/lsb/init-functions

Потім в оболонці створіть символічні посилання з / etc / rc * до мого сценарію:

sudo update-rc.d <myapp> defaults 95

Що означає 95 тут?
Герман

@Gherman це пріоритет
турсон

1

Гаразд, я спробував кілька кроків на цю відповідь stackoverflow ( Запуск сценарію на початку 17.04? ), І вони спрацювали:

  1. Ubuntu о 17.10
  2. У мене є додаток python на сервері Gunicorn 19.x, мені потрібно запустити цю програму як сервіс.

Спочатку потрібно написати файл 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

Значення кожного слова з лівої сторони знаку '=' та їх еквівалента в (до попереднього) вгорі починається за посиланням https://wiki.ubuntu.com/SystemdForUpstartUsers

Коли файл готовий, скажімо, ви називаєте його як "foo.service" (розширення .service важливо)

Вам потрібно помістити файл /lib/systemd/system

Після цього вам потрібно включити послугу, зателефонувавши

systemctl enable foo

Що запропонує вам ввести свій кореневий пароль, оскільки це буде створювати символьні посилання.

Якщо ви до цього дійшли без зайвих клопотів, ви добрі. Отже, ваша послуга створена. Початок - зателефонувавши

sudo service foo start

systemctl status fooщоб побачити статус sudo service foo stopдля припинення послуги



0

У мене було те саме питання, це рішення, яке працювало на мене. Спробуйте:

sudo systemctl daemon-reload

sudo systemctl включити daemon_app.service

sudo systemctl запуск daemon_app.service

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.