इनपुट के साथ Nohup कमांड निष्पादित करें


11

UNIX में, मेरे पास एक प्रक्रिया है जिसे मैं nohup का उपयोग करके चलाना चाहता हूं। हालांकि, इस प्रक्रिया को एक प्रॉम्प्ट पर कुछ बिंदु इंतजार में मैं कहाँ दर्ज करनी होगी yesया noइसे जारी रखने के लिए। अब तक, UNIX में मैं निम्नलिखित कार्य कर रहा हूं:

nohup myprocess <<EOF
y
EOF

इसलिए मैं 'y' के साथ फाइल में nohup और पाइप का उपयोग करके 'myprocess' प्रक्रिया शुरू करता हूं, फिर फाइल को बंद कर देता हूं। ऊपर दी गई लाइनें प्रभावी रूप से तीन अलग-अलग कमांड हैं - यानी मैं UNIX में पहली पंक्ति में प्रवेश करता हूं, फिर मुझे एक संकेत मिलता है जहां मैं 'y' दर्ज करता हूं और फिर अंत में 'EOF' टाइप करता हूं और फिर से वापसी करता हूं। तो यह पूरी तरह से काम करता है, लेकिन मेरी समस्या नीचे है।

मैं अब इसे पर्ल में निष्पादित करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि मैं इस कमांड को कैसे निष्पादित कर सकता हूं, क्योंकि यह तीन लाइनों से अधिक है। मुझे नहीं पता कि क्या निम्नलिखित काम करेगा:

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

यह उस तरह से काम करना चाहिए जिस तरह से इसे प्रश्न में लिखा गया है (पहले संपादन के बाद इसे थोड़ा

@ मैं वास्तव में नहीं जानता कि आप किस बारे में बात कर रहे हैं, पहले संपादन ने एक नई पंक्ति जोड़ी और शेल भागों को कोड के रूप में स्वरूपित किया ताकि वे ठीक से प्रदर्शित हो सकें। मैं वास्तव में कुछ भी नहीं बदला, मूल संशोधन है यहाँ
माइकल Mrozek

@ मिचेल: आप सही हैं और मुझे खेद है। मैंने अंतर को गलत समझा और सोचा, आपने बैकटिक्स को जोड़ा है। प्रश्न को और अधिक निरर्थक बनाता है: दिए गए उदाहरण के अनुसार काम करना चाहिए।

@ पेल एक? मुझे लगता है कि यह बिना कोशिश किए बिना काम नहीं करता क्योंकि मुझे पता नहीं है, लेकिन मुझे लगता है कि उन्होंने कहा "मुझे नहीं पता कि निम्नलिखित काम करेगा", इसलिए शायद यह ठीक है; आपको शायद केवल यह उत्तर देना चाहिए कि दिए गए उदाहरण काम करते हैं
माइकल मूरज़ेक

जवाबों:


19

यदि आप yइस प्रक्रिया को एक ही लिखना चाहते हैं , तो आप ऐसा कर सकते हैं:

(echo y | nohup myprocess) &

यदि आप yआने वाले प्रत्येक संकेत के लिए लिखना जारी रखना चाहते हैं , तो कोरुटिल yesवास्तव में इस उद्देश्य के लिए मौजूद है - जो कुछ भी आप इसे बताते हैं उसे लिखना जारी रखेंगे। इसका डिफ़ॉल्ट "y" आउटपुट के लिए है, इसलिए आप बस:

(yes | nohup myprocess) &

लेकिन अगर आपको कुछ और चाहिए तो आप इसे एक तर्क के रूप में पारित कर सकते हैं


+1: मैंने yeseons में उपयोग नहीं किया है
msw

माइकल, आपके शीघ्र उत्तर के लिए धन्यवाद। हालाँकि, मुझे लगता है कि मैंने आपके सुझाव को आज़मा लिया है जिससे मैं इस प्रक्रिया में वाई की प्रतिध्वनि करता हूँ। जब मैंने यह कर लिया है, तो आउटपुट हमेशा मेरे टर्मिनल पर फैलता है इस तथ्य के बावजूद कि मैंने सुनिश्चित किया है कि एक और मेरे में है

कंसोल को लिखे जाने के लिए प्रक्रिया आउटपुट को रोकना नहीं है। यह सिर्फ पृष्ठभूमि में शुरू होता है।
fschmitt

कैसे इस सवाल के साथ कुछ करने के लिए जवाब है?

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