ทำให้หน้าจอ GNU อยู่รอดได้รีบูต


18

ฉันใช้หน้าจอ GNU บ่อยครั้งมาก ฉันพบว่ามันน่ารำคาญมากที่ต้องรีบูตเซิร์ฟเวอร์ทุกครั้งที่ฉันทำเซสชันของฉันหาย (แม้ว่าฉันจะรู้ล่วงหน้าฉันต้องตั้งค่าทุกอย่างอีกครั้ง)

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

  • CryoPID : ดูเหมือนว่าจะตายสัญญาตั้งแต่ปีพ. ศ. 2548 ที่จะรวมการสนับสนุนหน้าจอ
  • DMCTP : มีปัญหากับ setuid () ไม่ทำงานสำหรับฉัน (ฉันยอมรับว่าฉันไม่ได้พยายามมาก)
  • สคริปต์บางตัวพยายามสร้างเซสชันใหม่อีกครั้งตั้งแต่เริ่มต้น คุณยังคงสูญเสียประวัติของคุณและฉันคิดว่าตัวแปรสภาพแวดล้อมไม่ได้ตั้งค่าอย่างถูกต้อง (และเมื่อฉันลองมันก็ไม่ได้ทำให้เกิดการประชุมทั้งหมด)

บางทีใครบางคนรู้ดีกว่ากระบวนการแช่แข็ง? นี่เป็นวิธีที่มีแนวโน้มมากที่สุด


บางทีคุณอาจจะจำศีลแทนการรีบูตเครื่อง :-) ผมจำได้ว่าใช้ DMCTP ระยะเวลานานที่ผ่านมาและการทำงาน (IIRC แต่ผมไม่แน่ใจว่า ... )
เฉื่อยชา

1
ในกรณีส่วนใหญ่การอัพเดตเคอร์เนลหรือการเปลี่ยนฮาร์ดแวร์ที่บังคับให้รีบูต (ซึ่งไม่ขึ้นอยู่กับฉันต่อไป ... ) - DMCTP: จะสนใจวิธีการทำงานโดยไม่ต้องมีหน้าจอคอมไพล์ใหม่ (ตามที่แนะนำบนอินเทอร์เน็ต)
fuenfundachtzig

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

คำตอบ:


13

ไม่มีวิธีบันทึกเซสชันของหน้าจอในแบบที่คุณต้องการ สิ่งที่ฉันทำคือสิ่งที่ดีที่สุดถัดไป: สคริปต์อัตโนมัติเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของฉันและตั้งค่าอุปกรณ์ของฉันในแบบที่ฉันชอบ

รักมัน

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

อย่างไรก็ตามฉันถามคำถามตรงนี้เมื่อหลายปีก่อนในรายการหน้าจอ

สรุป: แสวงหาชีวิตนิรันดร์สำหรับหน้าจอ แทนที่จะเรียนรู้ที่จะฟื้นคืนชีพ

นี่คือเนื้อของการตั้งค่า. screenrc:

มีตัวอย่างคือ rscreen ในแพ็คเกจ autossh ที่ฉันแก้ไขเป็นโปรแกรม econnect

พารามิเตอร์ --esc คือการตั้งค่าการหลีกเลี่ยงหน้าจอระยะไกลให้เป็นอย่างอื่น (การหลบหนีของฉันคือ `)

#add much much more scrollback
defscrollback 10000

# make some default windows

screen -t ADMIN     1
chdir /Users/chiggsy/Sites/
screen -t SITES    2
chdir /Users/chiggsy/src/
screen -t SRC 3
chdir
screen -t FERGUS  4 /Users/chiggsy/bin/econnect --host host.example.com --port 50000 --esc g --user sol
screen -t LAEG 5  /Users/chiggsy/bin/econnect --host host.example2.com --port 505000  --esc g --user invictus

screen -t ROOT      0   sudo su -m

2

ดู: http://skoneka.github.io/screen-session/

Available screen-session modes: 

---- 
save              - save Screen ( and VIM ) session 
load              - load session 
ls                - list saved sessions 
---- 

dump              - print detailed informations about windows in the session 
group             - move windows to a group 
layoutlist        - display a list of layouts 
layout-checkpoint - record a snapshot of the current layout. 
layout-history    - display saved snapshots of the current layout 
layout-redo       - load a snapshot of the current layout, 
layout-undo       - load a snapshot of the current layout, 
layout-zoom       - zoom into and out of a region 
kill              - send SIGTERM to last the process started in a window 
kill-zombie       - kill all zombie windows in the session 
kill-group        - recursively kill all windows in a group 
manager           - sessions manager (screenie like) but featuring session 
                    preview in a split window 
nest-layout       - copy a layout to the current region 
new-window        - start a new Screen window in the same working directory 
                    on the position next to the current window 
name              - get or set the sessionname 
regions           - display a number in every region (like tmux display-panes) 
renumber          - renumber windows to fill gaps 
subwindows        - recursively print windows contained in groups 

2

บน Server Fault คำถามเดียวกันได้รับคำใบ้หนึ่งคำซึ่งหายไปที่นี่: ใช้tmuxกับtmux-resurrectซึ่งคือ:

กู้คืนtmuxสภาพแวดล้อม[s] หลังจากระบบรีสตาร์ท

สิ่งที่สามารถกู้คืนได้สำหรับคุณ:

  • เซสชันทั้งหมด windows บานหน้าต่างและใบสั่งของพวกเขา
  • ไดเรกทอรีการทำงานปัจจุบันสำหรับแต่ละบานหน้าต่าง
  • รูปแบบบานหน้าต่างที่แน่นอนภายใน windows (แม้เมื่อซูม)
  • ใช้งานและเซสชั่นทางเลือก
  • หน้าต่างที่ใช้งานและหน้าต่างสำรองสำหรับแต่ละเซสชัน
  • หน้าต่างที่มีโฟกัส
  • บานหน้าต่างที่ใช้งานอยู่สำหรับแต่ละหน้าต่าง
  • "เซสชันที่จัดกลุ่ม" (คุณสมบัติที่มีประโยชน์เมื่อใช้ tmux กับจอภาพหลายจอ)
  • โปรแกรมที่ทำงานภายในบานหน้าต่าง! รายละเอียดเพิ่มเติมในโปรแกรมการฟื้นฟู doc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.