Ubuntu Upstart पर एक सेवा कैसे बनाएं


21

मेरे पास एक जावा निष्पादन योग्य कार्यक्रम है जिसे मैं java -jar abc.jarटर्मिनल में टाइप करके चला सकता हूं । मैं इसे सेवा के रूप में कैसे चला सकता हूं? मैं इसे टाइप करके एक सेवा के रूप में चलाना चाहता हूं service abc start


एक और पूर्ण उत्तर यहां है: unix.stackexchange.com/questions/1924/… मूल रूप से, उबंटू में आप /etc/init.d के लिए एक स्क्रिप्ट बना सकते हैं जो आपकी सेवा शुरू / बंद / फिर से शुरू कर सकती है।
श्री एड।

जवाबों:


41

सुनिश्चित करें कि आप 14.04 पर हैं। Ubuntu 16.04 (और ऊपर) सिस्टमड का उपयोग करता है, अपस्टार्ट का नहीं।

एक अपस्टार्ट स्क्रिप्ट एक स्क्रिप्ट फ़ाइल होती है जिसे अंदर /etc/init/और अंत में रखा जाता है .conf

इसे 2 खंडों की आवश्यकता है: एक को इंगित करना है कि कब शुरू करना है, और दूसरा निष्पादित करने के लिए कमांड के साथ।

आपके नमूने के साथ शुरू करने के लिए सबसे आसान स्क्रिप्ट है:

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

के तहत जड़ के रूप में बनाया गया /etc/init/myprogram.conf

यदि आपकी स्क्रिप्ट में एक से अधिक कमांड लाइन की आवश्यकता है, scriptतो execलाइन के बजाय अनुभाग का उपयोग करें :

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

अपनी सेवा के लिए बैश पूरा करने में सक्षम करने के लिए, /etc/init.dफ़ोल्डर में एक सिमलिंक जोड़ें :

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

फिर शुरू करने और इसे रोकने की कोशिश करें:

sudo service myprogram start

अपस्टार्ट कुकबुक के अनुसार , आप निष्पादित करने के लिए pre-start/ post-startऔर pre-stop/ post-stopकमांड बना सकते हैं ।

इसके अतिरिक्त, मैं पढ़ता हूं कि आप जांचना चाहते हैं कि कोई प्रक्रिया चल रही है या नहीं। इस प्रश्न की जाँच करें और शायद pre-startअनुभाग का उपयोग करें ।


1
शायद आपको इसके साथ निष्पादन योग्य बनाने की आवश्यकता है sudo chmod +x /etc/init.d/myprogram। चेतावनी: उबंटू 16.04 में काम नहीं किया गया आपका उत्तर दिया गया तरीका!
जूलियोसेर

2
@ जूलियोसेर 16.04 सिस्टमड का उपयोग करता है, अपस्टार्ट का नहीं।
राएल गुगेलमिन कुन्हा

start onएक आवश्यक श्लोक नहीं है। जैसा कि आप यहां पढ़ सकते हैं : इस तरह की नौकरी केवल एक प्रशासक द्वारा नियंत्रित की जा सकती है
SuB

@ एसयूबी यीप, लेकिन फिर नौकरी अपने आप शुरू नहीं होगी, और यह स्पष्ट था कि प्रश्न लेखक सेवा की तरह कुछ कार्य करना चाहता है, यानी स्वचालित रूप से शुरू करना।
राएल गुगेलमिन कुन्हा

हाँ। मुझे पता है। अपना उत्तर पूरा करने के लिए बस एक टिप्पणी जोड़ी।
SuB

0

आपको एक upstart बनाने की आवश्यकता है। http://upstart.ubuntu.com/getting-started.html

Upstart (IMHO) एक अच्छा ol 'SysV init स्क्रिप्ट की तुलना में एक आपदा है। अपस्टार्ट अतिरिक्त कार्य के साथ एफएआर अधिक प्रयास है। उस के साथ, मुझे संदेह है कि वहाँ कुछ ऊपर रक्षक वहाँ हो जाएगा कि मुझे स्पष्ट और; बताते हुए मुझे काम करने के लिए ले जाएगा;


1
यह सिर्फ /etc/init/yourservice.conf में एक फाइल है, जिसमें यह संकेत मिलता है कि एक लाइन कब शुरू होनी चाहिए, और एक और कमांड को निष्पादित करने के लिए। फेडोरा अपस्टार्ट का भी उपयोग करता है। इसके अतिरिक्त, यहां तक ​​कि डेबियन अपने शुरुआती स्कीमा को SystemD में बदल रहा है, जो कि भविष्य में उबंटू स्कीमा होगा।
राएल गुगेलमिन कुन्हा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.