मैं ubuntu 10.4 LTS के लिए अंतिम अपस्टार्ट संस्करण का उपयोग कर रहा हूं। upstart --debug कर्नेल फ्लैग के साथ लॉन्च किया गया है।
मैं nzbget डेमॉन के लिए एक कस्टम जॉब कॉन्फ़िगरेशन बना रहा हूं। मूल रूप से, इस नौकरी में एक प्री-स्टार्ट स्क्रिप्ट है जो एक फाइल सिस्टम, एक पोस्ट-स्टार्ट स्क्रिप्ट है जो फाइल सिस्टम और एक exec nzbget -D
लाइन को अनमाउंट करता है ।
समस्या यह है कि nzbget डेमॉन को एक गैर-निजीकृत उपयोगकर्ता के रूप में चलाने की आवश्यकता है। यह सुविधा पहले से ही nzbget में शामिल है। दरअसल, जब मैं कंसोल sudo nzbget -D
से चलता हूं तो प्रक्रिया एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलती है। लेकिन जब मैं exec nzbget -D
लाइन के साथ अपस्टार्ट का काम शुरू करता हूं , तो प्रक्रिया nzbget -D रूट के रूप में चलती है। जैसा कि ऊपर की रसोई की किताब में कहा गया है, मैंने su -c "nzbget -D" उपयोगकर्ता का उपयोग करने की कोशिश की और सलाह के रूप में उम्मीद के श्लोक के बिना स्टार्ट-स्टॉप-डेमॉन दोनों भी शुरू किया। लेकिन दोनों आज्ञाओं के लिए, जैसा कि upstart गलत PID पर नज़र रखता है, मुझे लगता है कि यह मुख्य प्रक्रिया को मारता है (स्टार्टिंग के लिए upstart लॉग के कारण) और प्रक्रिया शुरू होने के अंत में, यह पोस्ट-प्रोसेस स्क्रिप्ट लॉन्च करता है, जो मुझे नहीं चाहिए।
=> मैं इसे सही कैसे कर सकता हूं? यह कैसे होता है कि exec nzbget -D
अपस्टार्ट कमांड प्रक्रिया को रूट के रूप में चलाता है जबकि sudo nzbget -D
कमांड इसे गैर-निजीकृत उपयोगकर्ता के रूप में चलाता है।