nohup: इनपुट को अनदेखा करना और stdout को stderr को पुनर्निर्देशित करना


19

मैं nohupनीचे वर्णित के रूप में पृष्ठभूमि में अपना आवेदन शुरू कर रहा हूं -

root@phx5qa01c:/bezook# nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out &
[1] 30781
root@phx5qa01c:/bezook# nohup: ignoring input and redirecting stderr to stdout

लेकिन हर बार मैं यह संदेश देखता हूं -

nohup: ignoring input and redirecting stderr to stdout

यदि मुझे यह संदेश दिखाई देता है तो क्या कोई समस्या होगी? इसका क्या मतलब है और मैं इससे कैसे बच सकता हूं?


2
क्या आपने कोशिश की है:nohup java -jar blaa bla >/tmp/test.out 2>&1 &
राहुल पाटिल

उपयोग करने के बजाय /tmp/test.outमैं उपयोग कर सकता हूं exhibitor.out। गूंगा प्रश्न पूछने के लिए क्षमा करें क्योंकि मैं इन चीजों के लिए बहुत नया हूं ..
शस्त्रागार

हाँ .. आप उपयोग कर सकते हैं .. कि सिर्फ एसटीडी त्रुटि / आउटपुट फ़ाइल है। लेकिन जोड़ने के बाद स्थिति क्या है 2>&1?
राहुल पाटिल

जवाबों:


20

यह सुनिश्चित करने के लिए कि आपके आवेदन को उसके टर्मिनल से अलग कर दिया गया है - ताकि वह अग्रभूमि कमांड के साथ हस्तक्षेप न करे और लॉगआउट करने के बाद भी आपको चलता रहे - nohupयह सुनिश्चित करता है कि न तो स्टड और न ही स्टडआउट टर्मिनल जैसा उपकरण है। प्रलेखन का वर्णन करता है क्या कार्रवाई यह लेता है:

यदि मानक आउटपुट एक टर्मिनल है, तो उसके मानक आउटपुट में नामित उपयोगिता द्वारा लिखा गया सभी आउटपुट वर्तमान निर्देशिका में फाइल nohup.out के अंत में जोड़ा जाएगा। यदि nohup.out को बनाने के लिए या खोला नहीं जा सकता है, तो आउटपुट को घर के पर्यावरण चर द्वारा निर्दिष्ट निर्देशिका में फाइल nohup.out के अंत में जोड़ा जाएगा। यदि न तो फ़ाइल को बनाया जा सकता है और न ही उसे जोड़ा जा सकता है, तो उपयोगिता नहीं मानी जाएगी।

यदि मानक त्रुटि एक टर्मिनल है, तो मानक उपयोगिता के नाम से लिखी गई सभी आउटपुट को मानक आउटपुट के रूप में एक ही फाइल डिस्क्रिप्टर पर पुनर्निर्देशित किया जाएगा।

जब आप > exhibitor.outअपनी कमांड लाइन में टाइप करते हैं, तो आप एक फ़ाइल पर पुन: निर्देशित करते हैं । यदि आप अपने आवेदन के stderr को उसके स्टडआउट के रूप में उसी फ़ाइल पर निर्देशित करने के साथ ठीक हैं, तो आपको कुछ और करने की आवश्यकता नहीं है। या आप इस तरह के एक तर्क जोड़कर एक अलग फ़ाइल के लिए stderr पुनर्निर्देशित कर सकते हैं 2> exhibitor.err। (अज्ञात उपयोगकर्ता के लिए धन्यवाद - मेरी सूचनाओं में इस विकल्प को शामिल करने का सुझाव देने के लिए कोई नाम नहीं दिखाया गया है।)


2
मैन्युअल रूप से इनपुट fd को बंद करना भी उपयोगी है </dev/null; लिनक्स स्वचालित रूप से ऐसा करेगा, लेकिन अगर मैन्युअल रूप से नहीं किया जाता है, तब भी आपको nohup: ignoring input
नोहूप

17

यदि आप एसटीडी आउटपुट में त्रुटि को रीडायरेक्ट करते हैं तो आप संदेश से छुटकारा पा सकते हैं:

nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1 &

4

मेरी स्थिति में, मैं stdout और stderr को पुनर्निर्देशित करता हूं, लेकिन यह लॉग फ़ाइल में निम्न प्रदर्शित करता है:

nohup: ignoring input

उस चेतावनी को हटाने के लिए, आपको निम्न के रूप में स्टड पुनर्निर्देशित करना होगा:

nohup java -jar ./exhibitor-1.5.1/lib/exhibitor-1.5.1-jar-with-dependencies.jar -c file --fsconfigdir /opt/exhibitor/conf --hostname phx5qa01c.phx.qa.host.com > exhibitor.out 2>&1  </dev/null &

मुझे लगा कि यह उत्तर निश्चित रूप से आपके लिए देर से होगा, लेकिन शायद यह दूसरों की मदद करेगा।

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