ออกจากเชลล์ด้วยทางลัด (ไม่พิมพ์ exit) ซึ่งปิดเซสชันอย่างถูกต้อง


12

ฉันใช้คำสั่ง ProxyJump สำหรับจำนวนเซสชัน ssh ที่ฉันใช้ทุกวันและสลับผู้ใช้จำนวนมากบนเซสชันเหล่านี้และต้องพิมพ์exit3 หรือ 4 ครั้งในแถวไม่สนุกเกินไป

ฉันรู้ว่าnewline+ ~+ .เพื่อยุติเซสชัน ssh ฉันยังต้องตรวจสอบว่ามันจบลงด้วยความเป็นมิตรexitแต่คุณจะออกจากเซสชันทั้งหมดในเชลล์ปัจจุบันด้วยคำสั่งเดียวหรือทางลัดเช่นพิมพ์exit3 หรือ 4 ครั้งได้อย่างไร ในกรณีของฉันกลายเป็นสิ่งที่ครั้งเดียว?


2
~.เพียงยกเลิกการเชื่อมต่อไคลเอ็นต์ SSH ของคุณ (มีประโยชน์เมื่อเครือข่ายหายไป) โดยปกติ SSH daemon จะจดจำและส่งสัญญาณเซสชันด้วยSIGHUPดังนั้นจึงไม่เหมือนกับการเลิกใช้เชลล์ตามปกติ (แต่จะมีประโยชน์หากคุณไม่สามารถรับการตอบสนองใด ๆ จากเชลล์)
Toby Speight

คำตอบ:


29

Ctrl- Dจะออกจากเชลล์ในหลายกรณี exit Enterมันเป็นได้เร็วกว่าการพิมพ์ ยังไม่ได้มีคำสั่งเดียวที่จะยกเลิกทุกอย่าง แต่การถือครองCtrlและการกดปุ่มDหลาย ๆ ครั้งนั้นง่ายและเร็วขึ้น ไม่แน่ใจว่าสิ่งนี้มีประโยชน์สำหรับการใช้งานของคุณอย่างไร

หารือในรายละเอียดที่นี่


2
จุดต่อไปคือunix.stackexchange.com/a/182071/5132และจุดหยุดหลังจากนั้นคือการอ่านเพิ่มเติมที่นั่น (-:
JdeBP

2
ระวังด้วย CTRL + D ในทุบตีหากคุณมีตัวละครใด ๆ ในพรอมต์ของคุณกดปุ่ม CTRL + D จะดำเนินการในลักษณะเดียวกับที่ใส่ กล่าวอีกนัยหนึ่งไม่ต้องพิมพ์rmคำสั่งแล้วกด CTRL + D หากคุณไม่ต้องการดำเนินการ ฉันไม่เห็นพฤติกรรมนี้เป็น ksh
Peschke

2
@Peschke ในทุกระบบฉันเคยใช้ Ctrl + D ไม่ได้ทำอะไรเลยถ้าฉันพิมพ์อะไรลงไป ฉันไม่เคยเห็นพฤติกรรมที่คุณอธิบาย
John Kugelman

1
@JohnKugelman ฉันทดสอบและยืนยันพฤติกรรมในขณะที่ความคิดเห็นของฉันมีการทุบตีใน RHEL 7.5
Peschke

3
Peschke กำลังใช้การviเชื่อมอินพุตเทอร์มินัล
JdeBP

5

พิมพ์ดีด~.จริงไม่เคล็ดลับของการปิดทุกการเชื่อมต่อ "ที่ซ้อนกัน" ผ่านไปที่ลึกที่สุด

มันทำเช่นนั้นได้ด้วยทางออกที่เป็นมิตรที่คุณต้องการตราบใดที่กระสุนทั้งหมดของคุณได้รับการกำหนดค่าให้จัดการ SIGHUP ด้วยความตายที่สง่างาม Bash ทำตามค่าเริ่มต้น คุณสามารถตรวจสอบทางออกที่เป็นมิตรสำหรับการตั้งค่าของคุณด้วยเช่นเห็นว่า.bash_historyไฟล์ของการประชุมลึกของคุณได้รับการปรับปรุงอย่างถูกต้องหลังจากที่~.หรือถ้าคุณตั้งทุบตี-ES ของคุณจะไม่ .bash_history ปรับปรุงเมื่อออกแล้วคุณอาจตั้งtrapบน ออกจากเหตุการณ์ (หรือในของคุณ~/.bash_logout) ด้วยคำสั่งที่เขียนบางสิ่งและหลังจากนั้นดูว่ามีการดำเนินการหรือไม่

นอกจากนี้ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ออกจากทุกเซสชันในเชลล์ปัจจุบัน" แต่ละ bash แบบโต้ตอบเป็นเพียงเซสชันเดียวและคำสั่งที่คุณพิมพ์ไปยังเชลล์ที่ลึกที่สุดของโซ่ ProxyJump เท่านั้น หากคุณหมายถึง "งานแบ็คกราวน์ในเชลล์ปัจจุบัน" bash จะส่ง SIGHUP ไปยังงานทั้งหมดที่ได้รับ SIGHUP โดย ssh daemon เมื่อ~., ดังนั้นการออกดังกล่าวควรจะเป็นมิตรอย่างสมบูรณ์ถ้างานที่ตอบสนองต่อ SIGHUP อย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.