ปิดคอมพิวเตอร์โดยไม่ฆ่าเซสชัน SSH


14

ฉันมีกระบวนการที่หนักและยาวมากที่ทำงานบนเครื่อง Linux ระยะไกล ฉันใช้แล็ปท็อปของฉันเพื่อ SSH กับเครื่องเหล่านี้และเรียกใช้กระบวนการจากที่นอนของฉัน

แต่เมื่อฉันต้องการปิดแล็ปท็อปของฉันฉันมีปัญหาเนื่องจากกระบวนการทางไกลถูกฆ่า

ฉันทำวิจัยของฉันและพบว่า "หน้าจอ" เป็นทางออกที่ดีสำหรับฉันมันคือ! (ตราบใดที่ฉันไม่ปิดแล็ปท็อปของฉัน) ไม่มีวิธีที่จะ "คงอยู่" เซสชัน "หน้าจอ" เพื่อให้ฉันสามารถปิดการทำงานและจากนั้นแนบกับเซสชันอีกครั้งได้หรือไม่


คุณกำลังใช้งานหน้าจอบนระบบ Linux ระยะไกลหรือไม่?
Sam Miller

เป็นไปได้หรือไม่ที่จะทำให้กระบวนการเป็นพื้นหลัง?
ennuikiller

คำตอบ:


32

ดูเหมือนว่าคุณกำลังใช้เซสชันหน้าจอบนแล็ปท็อปของคุณ จากนั้น sshing จากเซสชันหน้าจอนั้นไปยังโฮสต์ระยะไกล การปิดแล็ปท็อปจะทำให้กระบวนการหน้าจอในเครื่องเสียไปซึ่งจะฆ่าเซสชัน ssh

สิ่งที่คุณต้องการทำคือ ssh จากแล็ปท็อปของคุณไปยังโฮสต์ระยะไกล จากนั้นเริ่มเซสชันหน้าจอบนรีโมตโฮสต์ เมื่อคุณปิดแล็ปท็อปเซสชัน ssh จะตาย แต่เซสชันหน้าจอระยะไกลจะยังคงอยู่

ครั้งต่อไปที่คุณล็อกอินเข้าสู่ระบบรีโมตคุณสามารถแนบเซสชันหน้าจออีกครั้งด้วย "screen -r" หรือหากคุณมีเซสชันหน้าจอหลายรายการ "screen -r <pid>"

หมายเหตุ: หากคุณลืมที่จะแยกออกจากเซสชันหน้าจอระยะไกลก่อนที่จะถูกฆ่า ssh เซสชั่นหน้าจออาจคิดว่ายังคงมีการแนบ ในกรณีนี้คุณจะต้องทำ "screen -dr <pid>" เพื่อแยกเซสชั่นออกก่อน


4
โดยวิธีการถ้าฉันจำได้อย่างถูกต้องกดCtrl+Aตามด้วยDเมื่อคุณอยู่ในscreenจะแยกเซสชั่นหน้าจอ
David Z

@David นี้ถูกต้องคุณยังสามารถปิดเทอร์มินัลหรือเซสชัน ssh ของคุณและหน้าจอจะยังคงเปิดอยู่ "screen -raAd" จะใส่กลับเข้าไปใหม่
คริส

ฉันจะเริ่มเซสชันหน้าจอบนรีโมตโฮสต์ได้อย่างไร
ความโง่เขลา

15

คุณสามารถใช้nohupเพื่อเริ่มกระบวนการที่จะทำงานต่อหลังจากที่คุณได้ออกจากระบบจากเครื่อง นั่นอาจเป็นสิ่งที่คุณกำลังมองหา


สำหรับกระบวนการที่กำลังทำงานอยู่คุณสามารถทำ ^ Z จากนั้นdisownสร้างสิ่งที่ฉันเชื่อว่ามีผลเทียบเท่า disownเป็น bashism ที่อาจมีหรือไม่มีใน shell อื่น ๆ
intuited

+1 nohupสำหรับ ปัญหา^Zคือมันหยุดกระบวนการชั่วคราว ไม่มีวิธีใดที่จะทำให้กระบวนการเป็นพื้นหลัง แต่ให้กระบวนการทำงานโดยไม่สะดุด
Detly

6

หากคุณปลดเซสชันระยะไกลscreenคุณสามารถปิดแล็ปท็อปของคุณได้อย่างปลอดภัย


ไม่แน่ใจว่าเป็นที่ชัดเจนในระดับสากลว่าหน้าจอที่ถูกถอดออกจากนั้นต้องอยู่บนเซิร์ฟเวอร์ระยะไกลหรือไม่
intuited


2

ใช้ nohup อีกทางเลือกหนึ่งในการใช้ VNC สร้างเซสชัน VNC บนเซิร์ฟเวอร์ จากนั้นเชื่อมต่อกับมันทุกครั้งที่คุณทำงาน (มีประโยชน์มากกว่าเมื่อกระบวนการแบบยาวใช้ GUI บางตัวเป็น IDE)


0

หากเซิร์ฟเวอร์เหล่านี้มี KVM ระยะไกล ILO / DRAC / อื่น ๆ คุณอาจสามารถเชื่อมต่อกับคอนโซลและโต้ตอบที่นั่น เนื่องจากเซสชันที่เริ่มต้นนั้นอยู่ในพื้นที่การวางการเชื่อมต่อจากแล็ปท็อปของคุณจะไม่ทำอะไรเลย

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