Khi tôi bắt đầu một phiên SSH thực thi lệnh chạy dài, điều gì xảy ra với xử lý Ctrl+ C(SIGINT)?
Tôi có thể thấy rằng phiên SSH đã bị đóng, nhưng tôi không chắc ai sẽ nhận được SIGINT trước: phải không ...
Lệnh chạy dài từ xa? nghĩa là, (a) trình xử lý tín hiệu trong lệnh từ xa được gọi và dừng lệnh từ xa, (b) lớp vỏ sinh ra nó phát hiện ra rằng lệnh dừng và cũng dừng lại (c) sshd từ xa phát hiện ra vỏ đã dừng, để nó đóng kết nối
hoặc là
ssh cục bộ nhận tín hiệu và đóng kết nối.
Tôi nghĩ rằng (1) đang xảy ra, nhưng muốn chắc chắn.
Tôi cũng không chắc chắn về những gì xảy ra với việc xử lý SIGINTs trong trường hợp này. Ví dụ, nếu tôi ...
ssh remote 'while true ; do sleep 1 ; date ; done'
và Ctrl+ C, sau đó kết nối từ xa bị hủy. Có cách nào để chạy lệnh từ xa dưới lớp vỏ sẽ tồn tại sau Ctrl+ Ckhông? Đó là, trong trường hợp này, dừng vòng lặp và cho phép tôi tiếp tục làm việc trên shell từ xa?
ssh remote command
trái ngược vớissh remote
) sẽ bị giết (về phía cục bộ) bởi SIGINT được tạo bằng cách gõ ctrl-C. Phía từ xa có thể sẽ (phụ thuộc vào HĐH) vẫn chạy cho đến khi nó cố đọc hoặc ghi vào ổ cắm đã đóng. Nếu bạn muốn tất cả các tổ hợp phím của bạn, bao gồm ctrl-C, được chuyển đến điều khiển từ xa, hãy sử dụngssh remote
.