क्या डेबियन में डेमन बनाने का एक "मानक" तरीका है?


17

मुझे डेबियन में एप्लिकेशन से एक डेमॉन बनाने की आवश्यकता है। क्या उबंटू में "अपस्टार्ट" जैसे डेबियन में इसके लिए कोई मानक उपकरण है? मुझे केवल स्टार्ट-स्टॉप कमांड की आवश्यकता है, कुछ विकल्पों और एक पीआईडी ​​फ़ाइल के साथ एक डेमॉन के रूप में एक प्रोग्राम शुरू करने के लिए और इसे पीआईडी ​​फाइल के साथ मारना है।

मैंने init.d को देखा, लेकिन ऐसा लगता है कि ये बूट-टाइम लॉन्च के लिए हैं। मैं मैन्युअल रूप से अपना डेमॉन शुरू करना चाहता हूं।


2
ध्यान दें कि यह डेबियन जेसी के लिए बदल गया है, जिसने डिफ़ॉल्ट को सिसविनीट से सिस्टमड में बदल दिया है।
जूल्स

डेबियन jessie के पीछे की ओर कुछ अनुकूलता दिखाई देती है, कम से कम / usr / bin / सेवा का उपयोग करते हुए - यदि कोई अपस्टार्ट कॉन्फिगरेशन (/etc/init//sellingervice.conf) नहीं है और इसमें sysvinet config (/ etc / init) है। d / {सेवा}), तब / usr / bin / सेवा sysvinit के तहत पहले की तरह /etc/init.d/lookservice} के साथ बातचीत करेगी।
केविन

जवाबों:


18

आप /etc/init.d/skeletonडेबियन पर फ़ाइल के बाद मैन्युअल रूप से अपना डेमॉन बना सकते हैं ।

आप अपने डेमन /usr/bin/serviceको लॉन्च करने $ sudo service yourdaemon startऔर बंद करने के लिए उपयोग कर सकते हैं $ sudo service yourdaemon stop

जब तक आप अपनी स्क्रिप्ट को किसी भी /etc/rc?.dनिर्देशिका से लिंक नहीं करते हैं , तब तक यह स्टार्टअप पर शुरू नहीं होगा।

दूसरी ओर, आप डेमोंटोलस को देखना चाह सकते हैं , जो डेबियन पर मानक नहीं है, लेकिन कुछ दिलचस्प विशेषताएं हैं।


धन्यवाद। ऐसा लगता है /usr/bin/serviceकि मेरे पास अपने सिस्टम पर नहीं है (यह डेबियन लेनी है), लेकिन मैं सीधे स्क्रिप्ट शुरू कर सकता हूं /etc/init.d/myservice start
कुरोकी काज

3
आप उपयोग कर सकते हैं sudo invoke-rc.d yourservice startऔर साथ ही
chmeee

वह नहीं जानता था। धन्यवाद
सुबह 10:57

3

डेबियन (और उबंटू) के पास हेल्पर प्रोग्राम है start-stop-daemonजिसका उपयोग init स्क्रिप्ट में किया जाता है। डेमन को शुरू करने और ट्रैक करने के लिए इसके पास कुछ विकल्प हैं। आप बस इसके चारों ओर एक आवरण लिख सकते हैं, जैसे

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file 
       ;;
esac

3
मैं ऊपर सुझाए गए /etc/init.d/skeleton को प्राथमिकता दूंगा, क्योंकि इसमें INIT INFO भाग भी शामिल हैं, जो निर्भरता बूट करने के लिए प्रवासन में मदद करता है
dpavlin

2

डेबियन के लिए एक प्रक्रिया को ठीक से निर्धारित करने के लिए आपको नियंत्रण प्रक्रिया से दूर होने, आईओ को रीसेट करने और अच्छा खेलने के लिए प्रक्रिया आईडी फ़ाइल बनाने सहित कई कदम उठाने होंगे। आप इसके बजाय उसी नाम के पैकेज से डेमॉन प्रोग्राम जैसी किसी चीज़ का उपयोग कर सकते हैं। यदि आप ऐसा करना चाहते हैं, तो इसका जवाब आपको StackOverflow पर मिल सकता है: /programming/3095566/linux-daemonize

अपस्टार्ट कमांड डेबियन के इनवोक-आरओडी कमांड या सिसविनीट-बर्तन पैकेज से सेवा कमांड के समान है। वे /etc/init.d में init स्क्रिप्ट से काम करने की उम्मीद करते हैं। यह डेबियन पर अपने पैकेज में से एक बनाने के लिए मानक है और इसमें स्टार्ट-स्टॉप-डेमॉन प्रोग्राम का उपयोग किया जाता है जैसा कि आप /etc/init.d/skeleton उदाहरण में देख सकते हैं।

सिर्फ इसलिए कि आप एक /etc/init.d/myservice स्क्रिप्ट बनाते हैं इसका मतलब यह नहीं है कि इसे स्वचालित रूप से शुरू करना है। आप रनवेल्स को समायोजित कर सकते हैं जिस पर यह बंद हो जाता है और स्वचालित रूप से अपडेट-आरडीडी जैसे उपकरण का उपयोग करना शुरू कर देता है। इसे सभी रनवे पर शुरू करने से एक सेवा को अक्षम करने पर अधिक विस्तार से वर्णित किया गया है ?

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