<Myapp> .service शुरू करने में विफल: यूनिट <myapp> .service नहीं मिला


13

मैंने अपने अजगर बॉट के लिए एक सुपर बेसिक init.d स्क्रिप्ट बनाई:

#!/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 का उपयोग कर रहा हूं।

सबसे पहले इनिट फ़ंक्शन को बदलें

. /etc/init.d/functions

सेवा

. /lib/lsb/init-functions

फिर शेल में, मेरी स्क्रिप्ट में / etc / rc * से प्रतीकात्मक लिंक बनाएं:

sudo update-rc.d <myapp> defaults 95

यहां 95 का क्या मतलब है?
घुमर

@Gherman यह प्राथमिकता है
turson

1

ठीक है, मैंने कुछ स्टैकओवरफ़्लो उत्तर की कोशिश की ( 17.04 पर स्क्रिप्ट को आगे बढ़ाना? ) और उन्होंने काम किया मेरा env इस प्रकार है

  1. 17.10 पर उबंटू
  2. मेरे पास 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 foosudo service foo stopसेवा को रोकने के लिए स्थिति देखना


0

क्या आपने ऐसा कुछ किया है? मैं अपस्टार्ट स्क्रिप्ट को कैसे डीबग करूं?

क्या आप इस गाइड को आउटपुट प्रदान कर सकते हैं ताकि हम आपके मुद्दे को संभावित रूप से ख़राब करने में आपकी सहायता कर सकें?


0

मेरे पास एक ही मुद्दा था, यह समाधान है जो मेरे लिए काम करता है। प्रयत्न:

सुडो सिस्टेक्टल डेमन-रीलोड

sudo systemctl सक्षम करें daemon_app.service

sudo systemctl start daemon_app.service

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.