มีวิธีทำให้เซสชัน“ หน้าจอ” อยู่รอดในการรีบูตหรือไม่


25

ฉันใช้ยูทิลิตีหน้าจอและต้องการที่จะรักษาเซสชั่นเมื่อเครื่องรีบูต หากไม่สามารถทำได้คุณสามารถแนะนำทางเลือกอื่น ๆ ให้กับScreenซึ่งจะช่วยรักษาเซสชันระหว่างการรีบูต

ฉันใช้ Ubuntu Server 10.04 (Lucid Lynx) หากเป็นเช่นนั้น

ฉันมีหลายครั้งที่เปิดผ่านหน้าจอ เมื่อเครื่องรีบูตเซสชันเหล่านั้นทั้งหมดหายไปและฉันต้องเปิดใหม่อีกครั้ง ฉันต้องการหาวิธีรักษาเซสชันของหน้าจอเหล่านั้น


คุณพยายามทำอะไร คุณต้องการที่จะรักษาประวัติหรือทุกสิ่งที่ทำงานในเซสชั่นหน้าจอของคุณ?
Marcel G

1
การทำเช่นนี้จะไม่ทำให้วัตถุประสงค์ในการรีบูตเครื่องเสียหรือไม่
Brian Knoblauch

'เซสชัน' หมายถึงอะไร คุณหมายถึงว่าคุณมีการเชื่อมต่อ ssh ไปยังโฮสต์อื่น ๆ ในหลายหน้าต่าง หากนั่นคือสิ่งที่คุณหมายถึงจากนั้นเขียนไฟล์. screenrc และระบุ user @ host ที่คุณต้องการที่จะส่งเสียงควรทำเคล็ดลับ ... ถ้าคุณได้เปิดใช้งานการเข้าสู่ระบบรหัสผ่าน ssh จากนั้นเมื่อคุณเริ่มหน้าจอการเชื่อมต่อ ssh ทั้งหมดจะเริ่มโดยอัตโนมัติ คุณสามารถเริ่มจาก rc.local (ค่อนข้างยุ่งยากเพราะคุณต้องเริ่มต้นจาก su - ชื่อผู้ใช้ของคุณ) ดังนั้นเมื่อคุณเข้าสู่ระบบคุณสามารถติดตั้งเซสชันหน้าจอที่กำลังทำงานอีกครั้ง
natxo asenjo

1
ที่สำคัญทำไมคุณรีบูตเครื่องตลอดเวลา เซิร์ฟเวอร์ Unix ไม่ใช่ windows server แต่ได้รับการออกแบบมาเพื่อให้มีเวลามากขึ้นและเป็นที่ทราบกันดีว่าเครื่องมีช่วงเวลาหลายปีที่ผ่านมา หากคุณรีบูตเนื่องจากแพตช์รักษาความปลอดภัยของเคอร์เนลให้ดูที่ ksplice
Unix Janitor

คำตอบ:


16

ก่อนอื่นเรามาอธิบายสิ่งที่สำคัญสองอย่าง:

  1. มีเครื่องเกี่ยวข้องกี่เครื่อง? คุณกำลังเชื่อมต่อกับเครื่องระยะไกลหรือทุกอย่างในเครื่องท้องถิ่นของคุณหรือไม่?
  2. หากมีเครื่องระยะไกลที่เกี่ยวข้องกับเครื่องที่กำลังรีบูต: มันเป็นเซิร์ฟเวอร์หรือลูกค้า?

หากมีสิ่งหนึ่งที่เกี่ยวข้องกับเครื่องหรือถ้าเซิร์ฟเวอร์จะถูกรีบูตแล้วคุณส่วนใหญ่ออกจากโชค

หากคุณกำลังลงชื่อเข้าใช้เครื่องระยะไกล แต่จำเป็นต้องรีบูตเครื่องท้องถิ่นของคุณก็ไม่มีปัญหาตราบใดที่คุณใช้งานหน้าจอบนเครื่องระยะไกลแทนเครื่องท้องถิ่นของคุณ ฉันรู้ว่านี่เป็นสิ่งที่เห็นได้ชัดสำหรับผู้ใช้หน้าจอที่มีประสบการณ์ (แม้กระทั่งเล็กน้อย) แต่ฉันพูดถึงมันในกรณีที่อาจเป็นประโยชน์

ความเป็นไปได้อีกอย่างหนึ่ง (อีกครั้งว่าสิ่งนี้มีประโยชน์สำหรับคุณหรือไม่ขึ้นอยู่กับสถานการณ์ของคุณ) คือการรันเครื่องด้วยหน้าจอบน VM สมมติว่าเป็นเซิร์ฟเวอร์ทางกายภาพระยะไกลและจำเป็นต้องเริ่มระบบใหม่ แต่มีระบบปฏิบัติการ guest บน (เช่น) VMware คุณสามารถระงับ guest OS และเริ่มต้นขึ้นอีกครั้งหลังจากรีบูตฮาร์ดแวร์ ทุกอย่างขึ้นอยู่กับสาเหตุที่คุณต้องรีบูตซึ่งไม่ได้ระบุไว้และการควบคุมเครื่องของคุณและคุณเต็มใจที่จะแก้ไขปัญหาเหล่านั้นทั้งหมดหรือไม่

ไม่มีวิธีแก้ปัญหาที่ง่ายและเป็นไปได้ที่จะไม่มีวิธีใดที่เหมาะกับคุณ แต่โชคดีที่สุด

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

แต่ในกรณีส่วนใหญ่คุณหมายถึงเครื่องระยะไกลหรือเครื่องเดียวที่ถูกรีบูตซึ่งในกรณีนี้ไม่มีวิธีที่ง่ายในการทำเช่นนี้ CryoPID ฟังดูดีในตอนแรก แต่เว็บไซต์บอกว่ามันใช้งานไม่ได้กับหน้าจอ

แต่มีอีกทางเลือกหนึ่งที่ค่อนข้างคุ้มค่าที่จะสำรวจ (ไม่ว่าจะทำงานให้กับคุณหรือไม่นั้นขึ้นอยู่กับสิ่งที่คุณพยายามทำมาก) ลองดูที่ github.com: https://github.com/skoneka/screen-session/tree/master/ScreenSession/


+1 สำหรับ cryoPID ไม่ทราบเกี่ยวกับสิ่งนั้น!
Unix Janitor

ScreenSession ดูน่าสนใจจากคำอธิบายของมันนี่เป็นสิ่งที่ฉันต้องการ
Sergey G

5

ในบางสถานการณ์ที่หาได้ยากสิ่งนี้เป็นไปได้ (ดูCryoPIDหรือCryoPID2 ) แต่โดยทั่วไปนี่เป็นเรื่องยากจึงไม่สามารถทำได้


ลิงก์เสีย
kasperd

4

แทนที่จะใช้หน้าจอใช้ Virtualbox VM ขนาดเล็กและทำงานภายใน จากนั้นคุณสามารถไฮเบอร์เนตรีบูตโฮสต์จากนั้นปลุก VM สำรองข้อมูล (เช่นเดียวกับการปิดและเปิดฝาแล็ปท็อปอีกครั้ง) การเชื่อมต่อ SSH กับโฮสต์ระยะไกลอาจไม่คงอยู่โดยวิธีนี้ฉันไม่คิดว่ามันจะเป็นไปได้ที่จะรับประกันได้


จริง ๆ แล้วฉันต้องการอัปเดตคำตอบของฉันสำหรับการคืนชีพ tmux
Gaius

tmux-resurrect ดูเหมือนเป็นทางออกที่ดีมาก
serv-inc


1

ในทุกสิ่งนี้หน้าจอตัวเองค่อนข้างขอบ ไม่ใช่หน้าจอที่คุณต้องการ "บันทึก" ใช่หรือไม่ แต่เป็นสภาพแวดล้อมภายในเซสชันหน้าจอที่หลากหลายไม่ว่าจะเป็นอะไรก็ตาม

คุณดูเหมือนจะแนะนำว่าการบันทึกเซสชันหน้าจอจะครอบคลุมกระบวนการ SSH ภายในนั้นและทุกประเภท สิ่งที่ทำงานอยู่ภายใน Screen ไม่มีธุรกิจใด ๆ ใน Screen และสิ่งเหล่านั้นเป็นสิ่งที่ยากที่จะ "บันทึก" ... อะไรก็ตามที่จะหมายถึงถ้าสามารถนำไปใช้ได้จริง

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