Thoát khỏi vỏ bằng phím tắt (không gõ thoát), đóng phiên đúng cách


12

Tôi sử dụng lệnh ProxyJump cho một số phiên ssh tôi sử dụng hàng ngày và cũng chuyển đổi người dùng rất nhiều trong các phiên này và phải gõ exit3 hoặc 4 lần liên tiếp không quá thú vị.

Tôi biết newline+ ~+ .để chấm dứt phiên ssh, tôi vẫn phải kiểm tra xem liệu nó có kết thúc một cách thân thiện như exitkhông, nhưng làm thế nào để bạn thoát tất cả các phiên trong trình bao hiện tại bằng một lệnh hoặc phím tắt như vậy, gõ exit3 hoặc 4 lần trong trường hợp của tôi trở thành một điều một lần?


2
~.chỉ ngắt kết nối máy khách SSH của bạn (chẳng hạn như hữu ích khi mạng biến mất). Thông thường, trình nền SSH sẽ nhận ra điều đó và báo hiệu phiên của nó SIGHUP, vì vậy nó không hoàn toàn giống với việc thoát vỏ thông thường (nhưng sẽ hữu ích nếu bạn không nhận được bất kỳ phản hồi nào từ trình bao).
Toby Speight

Câu trả lời:


29

Ctrl- Dsẽ thoát khỏi một vỏ trong nhiều trường hợp. Nó nhanh hơn gõ exit Enter. Nó vẫn không phải là một lệnh duy nhất để chấm dứt mọi thứ, nhưng giữ Ctrlvà đánh Dnhiều lần thì dễ dàng và nhanh hơn. Không chắc chắn giá trị này như thế nào cho trường hợp sử dụng của bạn.

Thảo luận chi tiết tại đây .


2
Điểm dừng tiếp theo là unix.stackexchange.com/a/182071/5132 , và điểm dừng sau đó là đọc thêm ở đó. (-:
JdeBP 18/03/19

2
Hãy cẩn thận với CTRL + D. Trong bash, nếu bạn đã nhập bất kỳ ký tự nào trong lời nhắc của mình, nhấn CTRL + D sẽ thực thi nó theo cách tương tự Enter. Nói cách khác, đừng gõ một rmlệnh và sau đó nhấn CTRL + D nếu bạn không muốn thực thi nó. Tôi không thấy hành vi này trong ksh.
Peschke

2
@Peschke Trên mọi hệ thống tôi đã từng sử dụng Ctrl + D sẽ không làm gì nếu tôi gõ một cái gì đó. Tôi chưa bao giờ thấy hành vi bạn mô tả.
John Kugelman

1
@JohnKugelman Tôi đã kiểm tra và xác nhận hành vi tại thời điểm nhận xét của tôi với bash trên RHEL 7.5.
Peschke

3
Peschke đang sử dụng các viràng buộc đầu vào thiết bị đầu cuối.
JdeBP

5

~.thực sự không lừa đóng tất cả các kết nối "lồng" đến sâu nhất.

Nó làm như vậy với lối thoát thân thiện mà bạn muốn miễn là tất cả các vỏ của bạn được cấu hình để xử lý SIGHUP như một cái chết duyên dáng. Bash làm như vậy theo mặc định. Bạn có thể dễ dàng kiểm tra lối ra thân thiện cho thiết lập của bạn bằng cách ví dụ như nhìn thấy cho dù các .bash_historyfile của phiên sâu hơn của bạn được cập nhật đúng cách sau ~., hoặc nếu bạn thiết lập bash-es của bạn không cập nhật .bash_history khi xuất cảnh sau đó bạn có thể đặt traptrên Sự kiện EXIT (hoặc trong của bạn ~/.bash_logout) với một lệnh viết một cái gì đó ở đâu đó và sau đó xem liệu nó có được thực thi hay không.

Ngoài ra, tôi không chắc ý của bạn là gì khi "thoát tất cả các phiên trong shell hiện tại". Mỗi bash tương tác chỉ là một phiên và các lệnh bạn nhập sẽ luôn chỉ đến lớp vỏ sâu nhất của chuỗi ProxyJump. Nếu bạn có nghĩa là "các công việc nền trong trình bao hiện tại", bash sẽ gửi SIGHUP cho tất cả các công việc của nó khi nhận SIGHUP bởi ssh daemon trên ~., do đó lối thoát như vậy sẽ hoàn toàn có thể thực hiện được nếu các công việc đang chạy phản ứng đúng với SIGHUP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.