यह एक ऐसा सवाल है जिसे कई बार संबोधित किया गया है, न केवल यहां, बल्कि स्टैक एक्सचेंज नेटवर्क की अन्य साइटों में भी (जैसे कि मैं ssh को बाधित करने पर दूरस्थ प्रक्रिया को मारने के लिए ssh कैसे बनाऊं? )। हालाँकि, मैं मेरे लिए कोई भी समाधान काम नहीं कर सकता।
मैं ssh के माध्यम से एक कमांड चला रहा हूं। जब भी मैं ssh से बाहर निकलता हूं, मैं चाहता हूं कि कमांड भी मर जाए। यह कमांड एक डेमॉन है, जिसे ktserver कहा जाता है, जो कि Ctrl-C दबाने तक अनिश्चित काल तक चलता है।
मैं इसे निम्नानुसार चलाता हूं: ssh -t compute-0-1 ktserver
और, वास्तव में, जब मैं Ctrl-C दबाता हूं, तो प्रक्रिया इनायत से समाप्त होती है और ssh सत्र समाप्त होता है।
हालाँकि, अगर Ctrl-C दबाने के बजाय, मैं kill
कमांड का उपयोग करके ssh प्रक्रिया को मारता हूं (उदाहरण के लिए, SIGINT या SIGHUP को भेजना), तो यह ktserver
प्रक्रिया जीवित रहती है।
मैं ktserver
कैसे ssh
मारा जा सकता है पर हमेशा मर स्वतंत्र बना सकते हैं ?
संपादित करें : यदि, इसके बजाय, ktserver
मैं कुछ पूरी तरह से अलग चलाता हूं, जैसे gedit
, सब कुछ एक आकर्षण की तरह काम करता है (यानी जब कनेक्शन मर जाता है)। इसलिए, प्रक्रिया में ही कुछ गड़बड़ हो सकती है। उदाहरण के लिए, मैंने सोचा कि यह SIGHUP या SIGINT की अनदेखी कर सकता है। हालांकि, जब मैं दौड़ता हूं kill -1 ktserver
या kill -2 ktserver
, प्रक्रिया उम्मीद के मुताबिक मर जाती है।
EDIT2 : जैसा कि मार्क प्लॉटनिक बताते हैं, मुद्दा इस तथ्य से संबंधित है कि ssh चैनल पर कोई संचार प्रसारित नहीं होता है। मैंने ssh -t <host> read
ssh प्रक्रिया को बाद में चलाने और मारने की पुष्टि की है । read
अभी भी जीवित था और लात मार रहा था।
ssh example.com dd ...
कुछ घंटे बाद तक नौकरियां चली ssh
गईं। यदि आप ktserver
थोड़ी देर में एक बार कुछ आउटपुट करने के लिए विकल्प लेने के लिए बदल सकते हैं , तो यह एक वर्कअराउंड हो सकता है।
read
दूरस्थ कंप्यूटर में चलने की कोशिश की है , और ssh कनेक्शन को मारने के बाद, read
मर नहीं गया। दुर्भाग्य से, मैं कुछ भी उत्पादन करने के लिए ktserver नहीं बदल सकता। फिर कोई हल नहीं है?
shopt -s huponexit
)। क्या आप परीक्षण कर सकते हैं यदि यह आपके लिए काम करता है?
kill -9 ktserver
?