मैं अपस्टार्ट जॉब को कैसे डिबग करूं?


10

मेरे पास निम्नलिखित कार्य हैं /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

जब मैं काम शुरू करता हूं sudo service collector start, तो यह लटक जाता है। अगर मैं ctrl-cदौड़ता initctl listहूं, तो मैं यह देखता हूं:

collector start/killed, process 616

मैं twistdps में डेमॉन का एक उदाहरण नहीं देख सकता , और HTTP सर्वर जो इसे प्रदान करने वाला है वह मौजूद नहीं है।

मैंने da डेमॉन की अपेक्षा ’के बिना भी यह कोशिश की और एक scriptछंद का उपयोग करते हुए एक-लाइन बैश स्क्रिप्ट के लिए एक सरल कॉल के साथ , और यह अभी भी काम नहीं करता है। मुझे लगता है कि मैं बहुत गलत कर रहा हूं। यह क्या हो सकता है?


कोई जवाब नहीं, लेकिन मैं इसी तरह के मुद्दे से जूझ रहा हूं। यह उपस्टार्ट में एक बग भी हो सकता है: bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 मुझे नहीं पता कि इस लटके हुए राज्य से कैसे प्राप्त करें, फिर रिबूट करें। इसके अलावा मेरा मानना ​​है कि यह expect daemonरेखा के साथ क्या करना है ।
नुकसान

जवाबों:


14

आप अनुप्रेषित कर सकते हैं stdoutऔर stderrका उपयोग कर पूरे खोल के scriptpragma (बजाय execसंयोजन के रूप में) के साथ exec >FILE 2>&1है, तो जैसे:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

उम्मीद है कि आप क्या चल रहा है में बेहतर जानकारी देना चाहिए। मैंने अपनी अपस्टार्ट स्क्रिप्ट में सभी प्रकार की समस्याओं को पकड़ने के लिए इसे उपयोगी पाया है। आप अपनी कमांड को सीधे / सीधे पाइप कर सकते हैं, लेकिन आप शेल में उत्पन्न होने वाली त्रुटियों (सिंटैक्स त्रुटियों की तरह) से चूक जाएंगे।stdoutstderr

दूसरी ओर, यदि serviceफांसी दी जाती है, तो यह आपकी स्क्रिप्ट को हिट करने में भी नहीं हो सकती है , इस मामले में कोई भी मदद नहीं करेगा, निश्चित रूप से।


धन्यवाद, इसने मुझे सही रास्ते पर ला खड़ा किया। अंत में मैंने आउटपुट को पाइप किया logger, ताकि मैं सिर्फ पूंछ कर सकूं /var/log/syslog
सेरा

इसके अतिरिक्त, conf फ़ाइल में त्रुटियों को ही दिखाया गया है dmesg। जब मैं ऊपर का उपयोग कर रहा था मुझे कोई आउटपुट नहीं मिल रहा था तो मुझे यह पता चला। मैंने चदिर निर्देशन में एक टाइपो बनाया था।
कोडिंगफू

आपने वह कोड कहां रखा है?
केव

2

यहाँ भी console logघोषणात्मक है, जैसा कि यहाँ परिभाषित किया गया है: http://upstart.ubuntu.com/cookbook/#console-log

मुझे यह जानने के लिए कि यह डिफ़ॉल्ट रूप से सक्षम है, अपस्टार्ट के बारे में पर्याप्त नहीं पता है, लेकिन आप इसे प्रति अपार्टमार्ट नौकरी के आधार पर सक्षम कर सकते हैं, यह डिफ़ॉल्ट आउटपुट के द्वारा होगा /var/log/upstart/<job>.log


0

मान्य करें कि ऊपरवाला निदेशक मौजूद है, और स्क्रिप्ट चरण से पहले कंसोल लॉग जोड़ें। (ऊपरी संस्करण में ऊपरी तो 1.4 में यह डिफ़ॉल्ट है)

कंसोल लॉग

स्क्रिप्ट निष्पादन> / पथ / से / some_log_file 2> और 1 अपने स्क्रिप्ट को निष्पादित करें

अधिक जानकारी के लिए धागा देखें: /ubuntu/207143/how-to-diagnose-upstart-errors/932155#932155

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