शॉर्टकट के साथ शेल से बाहर निकलें (टाइपिंग एग्जिट नहीं) जो सत्र को ठीक से बंद कर देता है


12

मैं कई दैनिक सत्रों का उपयोग करने के लिए ProxyJump कमांड का उपयोग करता हूं, और उपयोगकर्ताओं को इन सत्रों पर बहुत अधिक स्विच करता हूं और exitपंक्ति में 3 या 4 बार टाइप करने में बहुत मज़ा नहीं आता है।

मुझे ssh सत्र समाप्त करने के लिए newline+ ~+ के बारे में पता है ., मुझे अभी भी यह देखना है कि क्या यह इसे एक इच्छाशक्ति की तरह सौहार्दपूर्ण तरीके से समाप्त करता है exit, लेकिन आप वर्तमान शेल में सभी सत्रों को एकल कमांड या शॉर्टकट से कैसे बाहर निकालते हैं, जैसे कि exit3 या 4 बार टाइप करना। मेरे मामले में एक बार बात हो जाती है?


2
~.बस अपने SSH क्लाइंट को डिस्कनेक्ट करता है (यह उपयोगी है जब नेटवर्क गायब हो गया है, उदाहरण के लिए)। आम तौर पर, SSH डेमन इसे पहचानता है और इसके सत्र को संकेत देता है SIGHUP, इसलिए यह शेल को सामान्य रूप से छोड़ने के समान नहीं है (लेकिन यह उपयोगी है यदि आपको शेल से कोई प्रतिक्रिया नहीं मिल सकती है)।
टॉबी स्पाइट

जवाबों:


29

Ctrl- Dकई मामलों में एक शेल से बाहर निकल जाएगा। यह टाइपिंग से तेज है exit Enter। यह अभी भी सब कुछ समाप्त करने के लिए एक भी आदेश नहीं है, लेकिन कई बार पकड़ना Ctrlऔर मारना Dआसान और तेज है। यह निश्चित नहीं है कि यह आपके उपयोग के मामले के लिए कितना मूल्यवान है।

यहां विस्तार से चर्चा की ।


2
अगला स्टॉप unix.stackexchange.com/a/182071/5132 है , और उसके बाद का स्टॉप वहां आगे पढ़ने के लिए है। (-:
JdeBP

2
CTRL + D से सावधान रहें। यदि आप अपने प्रॉम्प्ट में किसी भी वर्ण का इनपुट करते हैं, तो bash में, CTRL + D को हिट करने से इसे उसी तरह निष्पादित किया जाएगा, जिस तरह से Enter होगा। rmयदि आप इसे निष्पादित नहीं करना चाहते हैं , तो दूसरे शब्दों में, एक कमांड टाइप न करें और फिर CTRL + D को हिट करें। मैं इस व्यवहार को ksh में नहीं देखता।
पेश्के

2
@Peschke प्रत्येक प्रणाली पर मैंने कभी भी Ctrl + D का उपयोग किया है यदि मैंने कुछ टाइप किया है। मैंने आपके द्वारा वर्णित व्यवहार को कभी नहीं देखा है।
जॉन कुगेलमैन

1
@ जॉन कोहेलमैन मैंने आरएचईएल 7.5 पर बैश के साथ अपनी टिप्पणी के समय व्यवहार की जांच की और पुष्टि की।
पेश्के

3
पेसचके viटर्मिनल इनपुट बाइंडिंग का उपयोग कर रहा है ।
JdeBP

5

टाइप करना ~.वास्तव में करता है गहरी करने के लिए के माध्यम से सभी "नेस्टेड" कनेक्शन को बंद करने के चाल।

ऐसा तब होता है जब तक आप चाहते हैं कि सौहार्दपूर्ण मौत के रूप में SITEUP को संभालने के लिए आपके सभी गोले कॉन्फ़िगर किए गए हों। बैश डिफ़ॉल्ट रूप से होता है। आप अपने सेट-अप के लिए आसानी से सौहार्दपूर्ण निकास की जांच कर सकते हैं जैसे कि यह देखने के बाद कि क्या .bash_historyआपके गहन सत्रों की फाइलें ठीक से अपडेट होने के बाद मिलती हैं ~., या यदि आपने अपने bash-es को अपडेट नहीं करने के लिए सेट किया है तो बाहर निकलने पर bash_history को सेट trapकरें। EXIT ईवेंट (या अपने में ~/.bash_logout) एक ऐसी कमांड के साथ, जो कहीं न कहीं कुछ लिखती है और बाद में देखती है कि क्या इस पर अमल हुआ।

इसके अलावा, मुझे यकीन नहीं है कि आप "मौजूदा शेल में सभी सत्रों से बाहर निकलें" से क्या मतलब है। प्रत्येक इंटरएक्टिव बैश सिर्फ एक सत्र है, और आपके द्वारा टाइप की जाने वाली कमांड हमेशा केवल ProxyJump श्रृंखला के सबसे गहरे शेल तक जाती है। यदि आपका मतलब "वर्तमान शेल में बैकग्राउंड जॉब्स" है, तो bash SshUP को ssh daemon द्वारा प्राप्त करने पर अपनी सभी नौकरियों के लिए SITEUP भेज देता है ~., इसलिए ऐसे रनिंग जॉब पूरी तरह से सौहार्दपूर्ण होने चाहिए, यदि वे रनिंग जॉब्स किसी SITEUP पर ठीक से प्रतिक्रिया दें।

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