पृष्ठभूमि और निकास टर्मिनल में बैश स्क्रिप्ट चलाएँ


19

क्या कमांड या बैश स्क्रिप्ट निकास टर्मिनल लॉन्च करना संभव है और कमांड को बाधित नहीं करना है?

मेरा समाधान दिन के एक विशिष्ट समय में क्रोन को चलाने के लिए था, लेकिन मुझे यकीन है कि कुछ आसान है।


जवाबों:


45

टर्मिनल और शेल की चाइल्ड प्रक्रियाओं के प्रचार से बाहर निकलने के संकेतों से बचने के लिए nohup, यानी:

nohup cmd &

1
यह सही जवाब है। नोहप के बिना, शुरू की गई प्रक्रिया को अभी भी टर्मिनल प्रक्रिया का "बच्चा" माना जाता है और इस तरह टर्मिनल बंद होने पर समाप्त हो जाता है।
इज़्ज़ी

3
cmd & disownयह भी काम करता है, क्योंकि &एक ;कमांड विभाजक की तरह व्यवहार किया जाता है । डिसडाउन कमांड बैश शेल सेशन और बैकग्राउंड कमांड के बीच के कनेक्शन को हटा देती है।
lornix

2
zsh के पास इसके लिए एक आशुलिपि है cmd &|:।
थोर

इस काम के लिए, मुझे Terminal.app में वरीयता बदलनी पड़ी। प्रोफ़ाइल के अंतर्गत, अपनी सक्रिय प्रोफ़ाइल का चयन करें, फिर शेल> जब शेल बाहर निकलता है> बंद करें यदि शेल सफाई से बाहर निकलता है
एंटोनी

6

का उपयोग कर screen:

screen -S <session name> -d -m <your command>

उसके बाद आप टर्मिनल छोड़ सकते हैं, इसके द्वारा भी आप इसे रीटेट कर सकते हैं:

screen -r <session name>

अधिक जानकारी: संदर्भ


4

यदि आप किसी विशिष्ट कमांड को चलाना चाहते हैं या टर्मिनल से बाहर निकलने के बाद पृष्ठभूमि में हर सेकंड या फ़ाइल दर्ज करना चाहते हैं, तो आप इस आसान से छोटी चीज़ को आज़मा सकते हैं;

nohup watch -n5 'bash script.sh' &

यह हर 5 सेकंड में scipt.sh चलाएगा।


1
"नोहप" पहले से ही स्वीकृत उत्तर द्वारा कवर किया गया है। और मुझे पूरा यकीन है कि पूछने वाले ने क्रॉन का उल्लेख किया है क्योंकि वे यह कहने के लिए उपयोग कर रहे थे कि "इस कमांड को भविष्य में कुछ सेकंड चलाएं", न कि इसे समय-समय पर चलाने के लिए।
डेविड रिचेर्बी

1
मेरा जवाब चीजों को बदतर नहीं बनाता है। डाउन वोट का मुद्दा देखें। तंत्रिका पर्याप्त होगी।
जेमिथेलिन

3

अपनी आज्ञा के बाद एक "और" चरित्र रखो।

उदाहरण के लिए:

/home/your/script.sh &

7
इस मामले में, जब टर्मिनल बंद हो जाता है, तो इस प्रक्रिया /home/your/script.shको इसके द्वारा शुरू किया जाता है - जैसा कि इसके "माता-पिता" से अलग नहीं किया गया था, लेकिन सिर्फ "पृष्ठभूमि"। nohupवास्तविक के लिए इसे अलग करने के लिए उपयोग करें ।
इज़्ज़ल

मेरा बुरा, मुझे इसके बारे में पता नहीं था, लेकिन जब मैंने अपने डेबियन पर परीक्षण किया, तो कमांड ने शेल को बंद करने के बाद निष्पादित किया जो इसे लॉन्च किया: /
फ्लिंथ

1
मुझे यकीन नहीं है कि वास्तव में पृष्ठभूमि वाली प्रक्रिया कहां और कब जुड़ी है। लेकिन अगर आप उदाहरण के लिए किसी दूरस्थ मशीन में लॉग इन करते हैं, तो जैसे ही आप लॉग आउट करते हैं, निश्चित रूप से यह बंद हो जाता है (सिवाय इसके कि यह खुद को निष्क्रिय कर दिया जाए)। तो 100% निश्चित होने के लिए, आप बल्कि इसका उपयोग करते हैं nohup- जो उस सभी फ़ाइल (अब अदृश्य) आउटपुट को लॉग में nohup.outस्थित एक फ़ाइल में लॉग करता है जिसे आपने कमांड शुरू किया था।
इज़्ज़ल

ठीक है, अच्छी तरह से अपने स्पष्टीकरण के लिए धन्यवाद ^ ^
फ़्लिंट

jobsआदेश के साथ संयुक्त होने पर यह उत्तर ठीक काम कर सकता है । अक्सर मैं इसे पृष्ठभूमि के बाद शेल प्रक्रिया में वापस लाने में सक्षम होना चाहता हूं।
djangofan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.