สรุป : ฉันกำลังพยายามหาสาเหตุว่าทำไมเซสชัน tmux ของฉันถึงตายเมื่อฉันตัดการเชื่อมต่อจาก ssh
รายละเอียด :
ฉันติดตั้ง tmux ไว้ในระบบ Arch Linux แล้ว เมื่อฉันเริ่มเซสชัน tmux ฉันสามารถแยกออกจากมันแล้วแนบอีกครั้งในขณะที่เซสชัน ssh ใช้งานอยู่ แต่ถ้าฉันจบเซสชัน ssh ของฉันดังนั้นเซสชัน tmux จะถูกฆ่า
ฉันรู้ว่านี่ไม่ใช่พฤติกรรมปกติเพราะฉันมีระบบอื่นที่เซสชัน tmux ยังคงทำงานแม้ว่าจะสิ้นสุดเซสชัน ssh และฉันสามารถแนบกับเซสชัน tmux หลังจากสร้างการเชื่อมต่อ ssh ใหม่ ระบบที่มีปัญหาและระบบที่ทำงานอย่างถูกต้องมีการกำหนดค่าที่คล้ายกันมากดังนั้นฉันไม่แน่ใจว่าจะตรวจสอบอะไร
ฉันใช้ tmux เวอร์ชั่น 1.9a ระบบที่มีปัญหา (ที่ฉันมีการเข้าถึงรูท) มี Linux kernel เวอร์ชั่น 3.17.4-1 และระบบที่ทำงานถูกต้องมี kernel รุ่น 3.16.4-1-ARCH (ฉันไม่มีรูทอยู่ ระบบ). ฉันสงสัยว่าเวอร์ชันเคอร์เนลเป็นสาเหตุของปัญหา แต่นั่นเป็นเพียงความแตกต่างเดียวที่ฉันสังเกตเห็น
ฉันคิดว่าฉันขอให้ดูว่าใครเห็นปัญหาที่คล้ายกันและรู้วิธีแก้ปัญหาที่เป็นไปได้หรือไม่
ขั้นตอนที่แม่นยำที่นำไปสู่ปัญหาคือ:
- ssh กับเครื่อง
- รัน
tmux
เพื่อเริ่ม tmux ctrl-B D
เพื่อแยกออก (ตอนนี้ฉันสามารถติดตั้งใหม่ได้ด้วยtmux attach
- ปิดเซสชัน ssh (ณ จุดนี้เซสชัน tmux ถูกฆ่าฉันสามารถสังเกตได้เมื่อฉันเข้าสู่ระบบในฐานะรูทในเทอร์มินัลอื่น)
- เชื่อมต่อกับ SSH และเรียกใช้
tmux attach
และฉันได้รับข้อความno sessions
และทำงานผลตอบแทนtmux ls
failed to connect to server: Connection refused
สิ่งนี้สมเหตุสมผลเนื่องจากการให้บริการไม่ได้ทำงาน สิ่งที่ไม่สมเหตุสมผลสำหรับฉันคือเหตุผลที่มันถูกฆ่าในขั้นตอนที่ 4 เมื่อฉันตัดการเชื่อมต่อจากเซสชัน ssh
ข้อมูล strace:
ในการตอบสนองต่อหนึ่งในความคิดเห็นที่ฉันใช้ strace เพื่อดูสิ่งที่ระบบเรียกกระบวนการเซิร์ฟเวอร์ tmux ทำ ดูเหมือนว่าเมื่อฉันออกจากเซสชัน ssh ของฉัน (โดยการพิมพ์exit
หรือด้วยctrl-d
) ว่ากระบวนการ tmux จะถูกฆ่า นี่เป็นตัวอย่างของส่วนสุดท้ายของเอาต์พุต strace
poll([{fd=4, events=POLLIN}, {fd=11, events=POLLIN}, {fd=6, events=POLLIN}], 3, 424) = ? ERESTART_RESTARTBLOCK (Interrupted by signal)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=1, si_uid=0} ---
sendto(3, "\17", 1, 0, NULL, 0) = 1
+++ killed by SIGKILL +++
ฉันเปรียบเทียบสิ่งนี้กับระบบที่แตกต่างกันซึ่ง tmux ทำงานอย่างถูกต้องและในระบบนั้นกระบวนการ tmux ยังคงทำงานต่อไปแม้หลังจากที่ฉันออก ดังนั้นสาเหตุที่แท้จริงดูเหมือนว่ากระบวนการ tmux จะถูกยกเลิกเมื่อฉันปิดเซสชัน ssh ฉันจะต้องใช้เวลาแก้ไขปัญหานี้เพื่อหาสาเหตุ แต่ฉันคิดว่าฉันจะอัปเดตคำถามของฉันเนื่องจากข้อเสนอแนะ strace มีประโยชน์