मैं नीचे कमांड चला रहा हूं, और अन्य सिस्टम पर आउटपुट फाइल की निगरानी कर रहा हूं:
ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
अगर मैं ssh कमांड का उपयोग करके ^C
या सिर्फ उस टर्मिनल को मार रहा हूं, जिस पर मैं लॉग इन हूं, तो मैं रिमोट कमांड को समाप्त करने की उम्मीद करूंगा। हालांकि, ऐसा नहीं होता है: /tmp/count
सभी नंबर 1-5 की परवाह किए बिना प्राप्त करता है, और ps -ejH
शेल दिखाता है और इसका sleep
बच्चा चलता रहता है।
क्या यह अपेक्षित व्यवहार है, और क्या यह कहीं भी प्रलेखित है? क्या मैं इसे निष्क्रिय कर सकता हूं? चारों ओर पढ़ने से, मुझे उम्मीद है कि इस प्रकार के व्यवहार को स्पष्ट रूप से सक्षम करना होगा, न कि डिफ़ॉल्ट के लिए।
मैंने ssh और sshd के लिए मैन पेजों पर एक नज़र डाली है, लेकिन स्पष्ट कुछ भी नहीं देखा है, और Google मुझे इस व्यवहार को चालू करने के निर्देशों पर इंगित करता है, इसे बंद करने के लिए नहीं।
मैं Red Hat Enterprise Linux 6.2 चला रहा हूं, दोनों सिस्टम पर रूट लॉगिन और बैश शेल के साथ।
-tt
इसके बजाय का उपयोग करें-t
अगर ssh ही एक tty आवंटित नहीं है। यदि ssh जैसे विकल्पों के माध्यम से मंगलाचरण के बाद तुरंत backgrounded हो जाता है SSH एक आवंटित tty नहीं मिलेगा-f
या-n
।