PuTTY या अन्य - PuTTY [डुप्लिकेट] से बाहर निकलने के बाद भी कमांड निष्पादित करते रहें


13

मेरे पास कुछ आदेश हैं जिन्हें मुझे चलाने की आवश्यकता है। जब मैं अपना इंटरफ़ेस छोड़ता हूं तब भी इन कमांड को लगातार चलाने की आवश्यकता होती है। जब मेरे पास लिनक्स GUI का उपयोग होता है, तो मैं कुछ ऐसा निष्पादित करता हूं:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

किसी भी प्रकार के मदद की बहुत सराहना की जाएगी।



क्या कोई कारण है कि आप इन सेवाओं को डेमन के रूप में नहीं चला रहे हैं?
सेवनश्रेदी

क्या आज्ञाओं का मतलब ऐसी सेवाएँ होना है जो "हमेशा के लिए" लगभग 100% अपटाइम पर चलनी चाहिए, या लंबे समय से चल रहे प्रसंस्करण कार्य जो कुछ समय बाद समाप्त होने की उम्मीद है? सभी जवाब दोनों मामलों के लिए "काम" करेंगे, लेकिन उचित सिफारिश अलग होगी।
Peteris

आप लिनक्स के किस विशिष्ट वितरण का उपयोग कर रहे हैं? मैंने पाया कि रनिंग set -m;इसे इसलिए बनाता है कि सेंट और आरओईएल पर लॉग आउट करने के बाद मेरी स्क्रिप्ट चलती रहे।
आर्टऑफवर्फ

जवाबों:


33

प्रयत्न, कोशिश

nohup Background_ScriptX और

nohup यह सुनिश्चित करता है कि एक टर्मिनल बंद होने पर कोई प्रक्रिया समाप्त नहीं होती है। & प्रतीक प्रक्रिया को पृष्ठभूमि में धकेलता है।

आशा है कि यह मददगार था।


nohup निश्चित रूप से काम करता है
पिटो

सहायता करके हमें खुशी होगी।
एमानो ट्रैवर्स

15
nohup पर स्क्रीन का एक स्पष्ट लाभ है : nohup आपको एक रनिंग कमांड पर लौटने की अनुमति नहीं देता है (उदाहरण के लिए अगली सुबह इसके स्टडआउट को पढ़ने के लिए, फिर इसे मारने के लिए चुनें, आदि)। स्क्रीन आपको वास्तव में ऐसा करने की अनुमति देता है।
एंड्रियास एफ

1
nohup आउटपुट को एक फाइल में भेजता है जहाँ इसे प्रोसेस किया जा सकता है।
ब्रायन नोब्लुक

जो लोग नए हैं nohup, उनके लिए मूल रूप से "नो हैंगअप" है - नोह के साथ हैंगअप ( HUP) सिग्नल को नजरअंदाज किया जाता है।
दान .११

20

यदि आप बाद की तारीख में आउटपुट पढ़ना चाहते हैं, तो आप इसका उपयोग कर सकते हैं screen:

screen -d -m my_command

यह आपको एक अलग टर्मिनल देता है जिसे आप बाद में ( screen -r) स्टडआउट / स्टेडर आउटपुट को पढ़ने के लिए कनेक्ट कर सकते हैं ।


2
+1। एक के लिए, यदि आप अपने टर्मिनल (जैसे पोटीन) को बंद कर देते हैं और फिर आप इसे फिर से खोलते हैं और स्क्रीन ( screen -r) पर रीएटच करते हैं, तो आपके द्वारा तैयार किए गए सभी प्रोग्राम भी आपके पास होंगे और अन्यथा आप "मिस" हो जाएंगे। इसके अलावा, स्क्रीन बहुत सारे आश्चर्यजनक काम कर सकती है, जैसे विभाजन स्क्रीन, आदि! :)
अल्बर्टो सेंटिनी

6

एक अन्य विकल्प यदि nohupकमांड उपलब्ध नहीं है, तो डिस्क्वाइंड कमांड का उपयोग करना है ।

पहले आप jobsटर्मिनल में भाग लेकर अपने बैकग्राउंड कार्यों को देख सकते हैं । आप वहां से नौकरी का नंबर प्राप्त कर सकते हैं।

अब बस चलाते हैं disown %[job number]और वर्तमान टर्मिनल से प्रक्रिया को अलग कर दिया जाएगा और जब आप लॉग आउट करेंगे तो जीवित रहेंगे।

साइड नोट: सुनिश्चित करें कि आप सही सवाल पूछ रहे हैं। यदि आप अपने नमूने में संकेत के रूप में वास्तविक सेवाओं को चला रहे हैं, तो आप अपनी पसंद के ओएस में एक डेमॉन बनाने के तरीके पर गौर कर सकते हैं। यह सुनिश्चित करना है कि प्रक्रिया रिबूट के बाद भी चलती है और इसे अन्य सेवाओं के साथ अधिक सुसंगत बनाती है।

उम्मीद है की यह मदद करेगा।


3

चूंकि screenउल्लेख किया गया है: वहां से बाहर अन्य टर्मिनल मल्टीप्लेक्स हैं। मुझे tmuxबहुत पसंद है, उदाहरण के लिए एक तुलना के लिए यह अन्य सुपरसुअर प्रश्न, tmux बनाम स्क्रीन देखें


0

आप यह भी कोशिश कर सकते हैं: setsid सेटसिड पृष्ठभूमि कार्यक्रमों के लिए भी काम करता है और टर्मिनल / ssh सत्र के डिस्कनेक्ट होने के बाद उन्हें चालू रखने की अनुमति देता है।

इसे इस तरह उपयोग करें:

setsid program-to-background

Manpage: http://man7.org/linux/man-pages/man2/setsid.2.html

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