<myapp> .service: Birim <myapp> .service bulunamadı


13

Python botum için bir süper temel init.d komut dosyası oluşturdum:

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

Ve en üstte torbot.pyolmaya +xve #!/usr/local/bin/pythonzirveye çıkmaya hazırız. Aslında başlatmaya çalıştığımda, şunu elde ederim:

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

Bir şey mi kaçırıyorum?

Yanıtlar:


4

Ubuntu 16.04 veya daha yenisini kullanıyorsanız, hizmet dosyaları oluşturma hakkındaki systemd belgesini gözden geçirmek isteyebilirsiniz

Komut dosyası eski init sistemi içindir ve eski bir uyumluluk katmanı tarafından yönetilir.


2

Benim için Ubuntu 16.04 kullanıyorum.

İlk olarak init işlevini değiştirin

. /etc/init.d/functions

için

. /lib/lsb/init-functions

Daha sonra kabukta, / etc / rc * 'dan komut dosyasına sembolik bağlantılar oluşturun:

sudo update-rc.d <myapp> defaults 95

Burada 95 ne anlama geliyor?
Gherman

@Gherman önceliklidir
turson

1

Tamam, bu stackoverflow cevap bazı adımlar denedim ( 17.04 uptart script çalıştırılıyor? ) Ve onlar benim Env aşağıdaki gibi çalıştı

  1. 17.10'da Ubuntu
  2. Gunicorn 19.x sunucusunda bir python uygulaması var, bu uygulamayı bir hizmet olarak başlatmam gerekiyor.

Öncelikle bir foo.service dosyası yazmanız gerekir.

[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

'=' İşaretinin sol tarafındaki her kelimenin anlamı ve (daha önce) uptart içindeki eşdeğerleri https://wiki.ubuntu.com/SystemdForUpstartUsers bağlantısında

Dosya hazır olduğunda, diyelim ki dosyayı 'foo.service' olarak adlandırabilirsiniz (.service uzantısı önemlidir)

Dosyayı yerleştirmeniz gerekiyor /lib/systemd/system

Bundan sonra arayarak hizmeti etkinleştirmeniz gerekir

systemctl enable foo

Bu, sembolik bağlantılar oluşturacağından kök şifrenizi girmenizi isteyecektir.

Buraya hiç uğraşmadan ulaştıysanız, iyisinizdir. Hizmetiniz bu nedenle oluşturulur Başlat

sudo service foo start

systemctl status foosudo service foo stophizmeti durdurma durumunu görmek için



0

Aynı sorunu yaşadım, bu benim için işe yarayan çözümdü. Deneyin:

sudo systemctl arka plan programı

sudo systemctl enable daemon_app.service

sudo systemctl start daemon_app.service

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.