เมื่อฉันเริ่มเซสชัน SSH ที่ดำเนินการคำสั่งที่ใช้เวลานานจะเกิดอะไรขึ้นกับการจัดการCtrl+ C(SIGINT)
ฉันเห็นว่าเซสชัน SSH ถูกปิด แต่ฉันไม่แน่ใจว่าใครจะได้รับ SIGINT ก่อน: ใช่หรือไม่
คำสั่งที่ทำงานระยะไกลระยะไกล? นั่นคือ (a) ตัวจัดการสัญญาณในคำสั่งรีโมตถูกเรียกและหยุดคำสั่งรีโมต (b) เชลล์ที่วางไข่ตรวจพบว่าคำสั่งหยุดทำงานและหยุดเช่นกัน (c) sshd รีโมตตรวจจับเชลล์หยุด ดังนั้นจึงปิดการเชื่อมต่อ
หรือ
ssh ท้องถิ่นได้รับสัญญาณและปิดการเชื่อมต่อ
ฉันคิดว่า (1) กำลังเกิดขึ้น แต่ต้องการตรวจสอบให้แน่ใจ
ฉันยังไม่แน่ใจเกี่ยวกับสิ่งที่เกิดขึ้นกับการจัดการเชลล์ของ SIGINT ในกรณีนี้ ตัวอย่างเช่นถ้าฉัน ...
ssh remote 'while true ; do sleep 1 ; date ; done'
และCtrl+ Cจากนั้นการเชื่อมต่อระยะไกลจะลดลง มีวิธีเรียกใช้คำสั่งระยะไกลภายใต้เปลือกที่จะมีชีวิตอยู่หลังจากCtrl+ C? นั่นคือในกรณีนี้หยุดลูปและอนุญาตให้ฉันทำงานบนเปลือกระยะไกลหรือไม่
ssh remote command
, ตรงข้ามกับssh remote
) จะถูกฆ่า (บนโลคัล) โดย SIGINT ที่สร้างโดยการพิมพ์ ctrl-C ด้านระยะไกลอาจจะ (ขึ้นอยู่กับระบบปฏิบัติการ) ยังคงทำงานจนกว่าจะพยายามอ่านหรือเขียนไปยังซ็อกเก็ตปิด หากคุณต้องการการกดแป้นพิมพ์ของคุณทั้งหมดรวมทั้ง Ctrl-Cssh remote
จะได้รับการส่งต่อไปยังที่ห่างไกลการใช้