जवाबों:
यदि आप एक स्क्रिप्ट शुरू करना चाहते हैं, तो क्या यह आपके टर्मिनल को परेशान किए बिना आउटपुट के साथ चलती है और फिर बाद में इसके साथ बातचीत करने के लिए इसे लाएं, आप एक टर्मिनल मल्टीप्लेक्सर पर एक नज़र रखना चाह सकते हैं। आपके सिस्टम के आधार पर मैं सिफारिश करेंगे tmux
या screen
। आप नीचे दिए गए लिंक में उनका उपयोग करने के बारे में कुछ जानकारी पा सकते हैं:
tmux:
स्क्रीन:
संपादित करें: tmux प्राइमरों के लिए लिंक जोड़े गए
nohup टर्मिनल से एक कमांड को डिस्कनेक्ट नहीं करता है, यह आपकी स्क्रिप्ट को अनदेखा करता हैSIGHUP
, औरstdout/stderr
एक फ़ाइल पररीडायरेक्टकरता हैnohup.out
, ताकि आपके लॉग आउट करने के बाद कमांड बैकग्राउंड में चलती रहे।
nohup
स्वचालित रूप से यह पृष्ठभूमि में चलने वाली कमांड को नहीं डालता है। एक के साथ कमांड लाइन को समाप्त करके, इसे स्पष्ट रूप से करना चाहिए &
।
$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’
jobs
वर्तमान में चल रही नौकरियों और उनकी स्थिति को प्रिंट कर सकते हैं। यदि कमांड jobs
इसे नहीं खोज सकती है, तो यह अब उस शेल की चाइल्ड प्रक्रिया नहीं है ।
$ jobs
[1]+ Running nohup ./script.sh &
एक को बैकग्राउंड में बैकग्राउंड जॉब में लाया जा सकता है, fg
भले ही इसे साथ में चलाया जाए nohup
। लेकिन इससे आउटपुट पुनर्निर्देशनnohup.out
नहीं बदलेगा , जो अभी भी फ़ाइल में जा रहा है ।
$ fg
nohup ./script.sh
यदि आप शेल / टर्मिनल बंद करते हैं या लॉग ऑफ करते हैं, तो आपकी कमांड उस शेल का बच्चा नहीं है। यह init
प्रक्रिया के अंतर्गत आता है । यदि आप खोज करते हैं pstree
तो आप देखेंगे कि यह अब प्रक्रिया 1 ( init
) के स्वामित्व में है । इसे अग्रभूमि में वापस नहीं लाया जा सकता क्योंकि अग्रभूमि अब मौजूद नहीं है।
If the command jobs cannot find it, then it is no longer a child process of that shell.
यह गलत है: इस क्रम को देखें कि कैसे sleep 100 & disown ; echo Jobs:; jobs; echo Tree:; pstree -ap $$
:। इस आदेश के बाद आप अभी भी sleep
उसी पीआईडी के साथ काम देखेंगे , जब आपने इसे jobs
प्रिंट किया था, जबकि कुछ भी नहीं प्रिंट करेगा। जिस तरह से एक बच्चे की प्रक्रिया को रोका जा सकता है बच्चा अपने माता-पिता को खो रहा है (तब अनाथ बच्चा बन जाता है init
) या forking + exiting (लेकिन फिर पीआईडी बदल जाता है, इसलिए यह मूल बच्चा नहीं है)।
मैं दूसरा एक टर्मिनल बहुसंकेतक का इस्तेमाल करेंगे, लेकिन tmux स्क्रीन नहीं,। स्क्रीन सभी इरादों और उद्देश्यों के लिए है, अचयनित है। इसका विन्यास एक डार्क आर्ट है, जो संभवत: नेक्रोनोमिकॉन के परिशिष्ट में पहली बार दर्ज किया गया है। अपने स्वयं के विन्यास को लिखने का प्रयास करना, कथुलु की एक झलक के रूप में है। गंभीरता से। लोगों के पर चारों ओर देखो .screenrc फ़ाइलें । यह सुनिश्चित करने के लिए, स्क्रीन के विन्यास के एमीलेशन को मध्यस्थ बनाने के तरीके हैं। Byobu नश्वर उपयोगकर्ताओं और अपवित्र कोड के बीच घूंघट के रूप में एक सराहनीय काम करता है। यह समझदार रंगों के साथ आता है, एक मेनू इंटरफ़ेस, और शायद सबसे महत्वपूर्ण, एक स्टेटस बार।
लेकिन जैसा कि मैंने कहा, मैं इसके बजाय tmux की सलाह देता हूं । इसके लिए अभी भी कुछ मामूली विन्यास की आवश्यकता है, लेकिन यह अच्छी तरह से प्रलेखित है , और आपकी कॉन्फिग फ़ाइल भी अस्पष्ट नहीं होगी। इसके अलावा, आप रंगों और एक स्थिति पट्टी के साथ शुरू करते हैं। मेरी स्क्रीन आर्क और tmux.conf फ़ाइलों की तुलना करें:
किसी भी लिनक्स कमांड &
को आखिरी में ' ' जोड़कर बैकग्राउंड में भेजा जा सकता है ।
सभी पृष्ठभूमि की नौकरियों को देखने के लिए, आप जारी कर सकते हैं jobs
jobs
[1] + suspended nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2] running nohup sh kafka-server-start.sh ../config/server.properties
[3] - running nohup sudo mongod --dbpath=/var/lib/mongodb
यहां मैं पृष्ठभूमि में 3 नौकरियां चला रहा हूं: ज़ुकीपर, काफ्का और मोंगो डेमन। [१], [२] और [३] इन कार्यों के लिए संबंधित जॉब नंबर हैं।
आप उन कार्यों को अग्रभूमि का उपयोग करके ला सकते हैं fg %$taskNumber.