เพื่อความประหลาดใจของฉันฉันใช้ CRIU ( https://criu.org ) เพื่อตรวจสอบและรีสตาร์ทไคลเอ็นต์ mosh และทำงานได้
ตกตะลึง
ค้นหา PID ของลูกค้า mosh ของคุณ:
$ ps -ef | grep mosh
จากนั้นติดตั้ง CRIU ตามคำแนะนำ
จากนั้นให้ตรวจสอบดังนี้:
$ mkdir จุดตรวจ
$ sudo ./criu dump -D จุดตรวจสอบ -t PID - เชลล์ - งาน
จากนั้นกู้คืน:
$ sudo ./criu restore -D checkpoint --shell-job
และนั่นก็คือ ลูกค้า Mosh ของคุณกลับมาแล้ว
อย่างไรก็ตามสิ่งหนึ่งที่ควรทราบคือถ้าแล็ปท็อปของคุณรีบูต (ซึ่งเป็นจุดรวมของสิ่งที่เรากำลังพยายามป้องกัน), mosh ใช้monotonic
นาฬิกาเพื่อติดตามเวลาในฝั่งไคลเอ็นต์ซึ่งไม่สามารถรีบูตได้ สิ่งนี้จะไม่ทำงานอย่างไรก็ตามหากแล็ปท็อปของคุณเพิ่งขัดข้องไม่สามารถใช้งานได้เนื่องจากหมายเลขลำดับ mosh จะไม่ซิงค์กับเวอร์ชันที่ตรวจสอบแล้ว (ไบนารีจะทำงานต่อ แต่การสื่อสารจะหยุดทำงาน)
ในการแก้ไขปัญหานี้คุณต้องแจ้งให้ mosh หยุดการทำงานและดาวน์โหลดซอร์สโค้ด mosh จากนั้นแก้ไขไฟล์นี้:
ซีดี mosh
เป็นกลุ่ม configure.ac
จากนั้นค้นหาGETTIME
และใส่ความคิดเห็นในบรรทัดนั้น
จากนั้นทำ:
autoreconf # หรือ ./autogen.sh หากคุณเพิ่งโคลนเป็นครั้งแรก
./configure
แต่งหน้า
ทำการติดตั้ง
หลังจากนั้นเซสชันลูกค้า Mosh ที่เป็นจุดตรวจ CRIU ของคุณจะอยู่รอดได้
(เห็นได้ชัดว่าคุณต้องเขียนอะไรบางอย่างเพื่อทำจุดตรวจอย่างสม่ำเสมอเพื่อให้มีประโยชน์ แต่นั่นเป็นแบบฝึกหัดสำหรับผู้อ่าน)