पृष्ठभूमि में दूरस्थ ssh कमांड चलाने का सबसे अच्छा तरीका क्या है लेकिन फिर भी प्रदर्शित हो रहा है?


15

मुझे स्थानीय रूप से प्रदर्शित होने वाले आउटपुट के साथ दूर से एसएसएच कमांड चलाने की आवश्यकता है। लेकिन अगर कनेक्शन टूट जाता है तो मैं चाहता हूं कि कमांड अभी भी चले।

मैं लॉग इन करने और निष्पादित करने के बारे में इतनी बात नहीं कर रहा हूं, लेकिन ssh उपयोगकर्ता @ रिमोटहोस्ट 'कमांड्स && कमांड आदि' कर रहा है

यदि कनेक्शन टूट जाता है तो भी मैं यह कैसे सुनिश्चित कर सकता हूं कि कमांड चलता है?

जवाबों:


27

ऐसा करने का सबसे अच्छा तरीका स्क्रीन का उपयोग करना है, जो कनेक्शन के मरने पर भी सत्र को लगातार तरीके से खुला रखता है (और यदि आप इसे फिर से उपयोग करना शुरू करना चाहते हैं तो आप एक कर सकते हैं screen -rऔर इसे फिर से खोल देंगे)।

जो कुछ भी आप screen(जैसे। ssh -t user@host screen command) के साथ चलाना चाहते हैं, उसे उपसर्ग करना चाहिए।

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


आप को चलाने के लिए ssh -t का उपयोग करने की आवश्यकता होगी, ताकि कमांड को चलाने के लिए एक टर्मिनल आवंटित किया जा सके। अन्यथा त्रुटि "एक टर्मिनल से जुड़ा होना चाहिए।"
bonsaiviking

11

क्या आप एक निरंतर सत्र देख रहे हैं जिसे आप फिर से शुरू कर सकते हैं, या सिर्फ छूट को मारने से रोकने के लिए?

पूर्व के लिए, उपयोग करें screen, बाद के लिए nohup


7

जैसा कि पहले उल्लेख किया गया है, screenसभी चाल कर सकते हैं। लेकिन न केवल आप क्या जरूरत है। मैंने वर्षों से स्क्रीन का उपयोग किया है और अब हर बार सिस्टम में लॉगिन करने के बाद इसका उपयोग करता हूं। इस तरह के कॉन्फिगरेशन को स्थापित करने screenऔर बनाने की कोशिश करें ~/.screenrc:

sessionname     vcflists
startup_message off
deflogin        off
vbell           off
msgminwait      0
msgwait         10
log             off
backtick        1 0 0 hostname
caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%="
hardstatus alwayslastline "%{= rY}  %1`  %{= kg} %0c %{= bY}  %-w%{= Yk} %n %t %{-}%+w %=%{g}%l "

फिर चला screen -Rd vcf। यह स्क्रीन का बेहतर मंगलाचरण है। आप पहले से बनाए गए सत्र को vcf * (या यदि अस्पष्ट हो तो चेतावनी दी गई है) के साथ फिर से कनेक्ट करेंगे, या यदि सत्र अभी तक नहीं खोला गया है, तो इसे बनाया जाएगा। CTRL+ Aएक मेटा कुंजी है जो सब कुछ करती है। CTRL+A C( CTRL+ A, फिर C) सत्र के अंदर नई विंडो (स्क्रीन) बनाएं। CTRL+A SPACEएक दौर में अगली विंडो पर ध्यान केंद्रित करें। CTRL+A Dकनेक्शन के बीच सभी खिड़कियों को चालू रखते हुए वर्तमान सत्र को अलग करें। यदि आपने कुछ लूओगॉन्ग कार्य शुरू किए हैं तो आप स्क्रीन से अलग हो सकते हैं और बाद में देख सकते हैं कि क्या होता है। यदि आपका ssh सत्र खो जाता है, तो ऐसा ही होता है - सभी खुली हुई खिड़कियों और लॉन्च किए गए सभी कार्यों के साथ स्क्रीन जीवित रहती है।

यदि आप स्क्रीन के अंदर कुछ विंडो को बंद करना चाहते हैं - बस exitइसमें शेल से। यदि आप सभी विंडो और निकास स्क्रीन में सभी गोले / कार्य बंद करना चाहते हैं - बस CTRL+A CTRL+\पूछे जाने पर "Y" दबाएं और दबाएं।

बाकी सभी के लिए मैन स्क्रीन देखें।



1

मैं आमतौर पर करता हूँ:

nohup mycommand &

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