Gagal memulai <myapp> .service: Unit <myapp> .service tidak ditemukan

13

Saya membuat skrip init.d super dasar untuk bot python saya:

#!/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

Dan telah ditetapkan torbot.pymenjadi +xdan #!/usr/local/bin/pythondi atas. Ketika saya mencoba untuk benar-benar memulainya, saya mendapatkan:

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

Apakah saya melewatkan sesuatu?

ctote
sumber

Jawaban:

4

Jika Anda menggunakan ubuntu 16.04 atau yang lebih baru, Anda mungkin ingin meninjau dokumen systemd tentang membuat file layanan

Skrip ini untuk sistem init lama dan dikelola oleh lapisan kompatibilitas warisan.

teis
sumber
2

Bagi saya, saya menggunakan Ubuntu 16.04.

Pertama-tama ubah fungsi init

. /etc/init.d/functions

untuk

. /lib/lsb/init-functions

Kemudian di shell, buat tautan simbolis dari / etc / rc * ke skrip saya:

sudo update-rc.d <myapp> defaults 95
Leon Wolf
sumber
Apa artinya 95 di sini?
Gherman
@ Gherman itu prioritas
turson
1

Ok, saya mencoba beberapa langkah jawaban stackoverflow ini ( Menjalankan skrip pemula pada 17.04? ) Dan mereka berfungsi. Env saya adalah sebagai berikut

  1. Ubuntu pukul 17.10
  2. Saya memiliki aplikasi python di server Gunicorn 19.x, saya harus memulai aplikasi ini sebagai layanan.

Pertama, Anda perlu menulis 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

Arti setiap kata di sebelah kiri tanda '=' dan padanannya dalam (untuk yang sebelumnya) adalah di tautan https://wiki.ubuntu.com/SystemdForUpstartUsers

Setelah file siap, misalkan Anda menamainya sebagai 'foo.service' (ekstensi .service penting)

Anda harus memasukkan file /lib/systemd/system

Setelah itu Anda perlu mengaktifkan layanan dengan menelepon

systemctl enable foo

Yang akan meminta Anda memasukkan kata sandi root karena akan membuat symlink.

Jika Anda telah sampai di sini tanpa kesulitan, Anda baik-baik saja. Layanan Anda karenanya Mulai dibuat dengan menelepon

sudo service foo start

systemctl status foountuk melihat status sudo service foo stopuntuk menghentikan layanan

siddharthrc
sumber
0

Pernahkah Anda lelah seperti ini? Bagaimana cara men-debug skrip pemula?

Bisakah Anda memberikan output yang disediakan oleh panduan ini sehingga kami dapat membantu Anda berpotensi men-debug masalah Anda?

Sang Ulama
sumber
0

Saya memiliki masalah yang sama, ini adalah solusi yang bekerja untuk saya. Mencoba:

sudo systemctl daemon-reload

sudo systemctl aktifkan daemon_app.service

sudo systemctl mulai daemon_app.service

Erol Kalkan
sumber