Nohup का उपयोग करके कई कमांड कैसे निष्पादित करें


41

मुझे कई कमांड का उपयोग करके निष्पादित करने की आवश्यकता है nohup। प्रत्येक कमांड को पिछली कमांड के बाद निष्पादित किया जाना चाहिए।

मैंने एक उदाहरण के रूप में इस कमांड का उपयोग किया:

nohup wget $url && wget $url2 > /dev/null 2>&1 &

हालाँकि वह आदेश काम नहीं आया।

इस उद्देश्य के लिए मुझे किस कमांड का उपयोग करना चाहिए?

जवाबों:


56

इसमें लपेटें sh -c:

nohup sh -c 'wget "$0" && wget "$1"' "$url1" "$url2" > /dev/null &

1
जब मैं nohup लॉन्च करता हूं तो मुझे "nohup: इनपुट को अनदेखा करना और stdout को पुनर्निर्देशित करना" इसलिए "2> & 1" निरर्थक नहीं है?
harschware

1
शायद। मुझे लगता है कि जब मैंने उत्तर लिखा था तो मैंने इसे प्रश्न से कॉपी किया था।
jw013

6

क्या यह अलग शेल फ़ाइल में कमांड की अपनी सूची बनाने के लिए सरल नहीं होगा, जैसे कि कमांड.श, बिना किसी नोक के।

फिर आप कॉल करें:

nohup bash command.sh

4

दूसरों के बारे में पहले से ही जवाब दिया है nohup। एक व्यावहारिक पक्ष नोट के रूप में: मैं एक के भीतर बात इस तरह का करने की सलाह देते screenहैं या tmuxसत्र। इस तरह आप डिस्कनेक्ट कर सकते हैं, फिर बाद में फिर से कनेक्ट कर सकते हैं और आउटपुट और अंतिम परिणाम देख सकते हैं।


1
यह उत्तर इंटरैक्टिव परिदृश्यों के लिए बहुत अच्छा है, लेकिन स्क्रिप्ट या स्वचालन के लिए कोई मतलब नहीं है।
जोनाथन हार्टले

0

यह इस तरह सरल होगा:

nohup sh -c "wget $url && wget $url2" > /dev/null 2>&1 &

हालाँकि यह समस्याएँ पैदा कर सकता है यदि URL में विशेष अक्षर होते हैं ताकि आप सुरक्षित विकल्प का उपयोग कर सकें:

nohup sh -c "wget \"$url\" && wget \"$url2\"" > /dev/null 2>&1 &

3
केवल सुरक्षित तरीका करने के लिए मानकों को पारित करने के लिए sh -cअलग तर्क, स्थितीय मापदंडों के माध्यम से पहुँचा जा सकता है जो के माध्यम से है ( $0, $1, ...)। स्ट्रिंग पार्सिंग के लिए तर्कों को ठीक से उद्धृत करने का कोई आसान या सरल तरीका नहीं है। बच गए दोहरे उद्धरण चिह्नों का उपयोग करने का आपका प्रयास विफल हो जाता है यदि $urlस्वयं दोहरे उद्धरण शामिल हैं। अपने a='problem"'; sh -c "echo \"$a\""आप को देखें और देखें - आपको एक सिंटैक्स त्रुटि मिलनी चाहिए क्योंकि sh -cचलाने की कोशिश करता है echo "problem""
jw013

@ jw013 आउट ऑफ इंटरेस्ट, क्या आपकी आपत्ति स्वीकार किए गए उत्तर -हो द्वारा समान रूप से लागू होती है। आप से। शायद नहीं। लेकिन मुझे समझ नहीं आता कि क्यों नहीं! :-)
जोनाथन हार्टले

1
@JonathanHartley मुझे यकीन नहीं है कि मैं आपके सवाल को समझ सकता हूँ। यदि आप इस उत्तर की तुलना सावधानी से करते हैं तो आपको रास्ते में अंतर नोटिस करना चाहिए $urlऔर $url2इसका उपयोग किया जाना चाहिए ।
jw013

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