บันทึกสถานะเซสชันหน้าจอ GNU ที่สมบูรณ์


32

เป็นไปได้ไหมที่จะคงสถานะ "สถานะ" ของหน้าต่างหน้าจอ GNU (หรือเพียงเปลือกมาตรฐาน) เพื่อให้ฉันสามารถโหลดทุกอย่างใหม่หลังจากรีบูต:

  • จำนวนของเชลล์ที่เปิด
  • ชื่อของแต่ละเชลล์
  • ไดเรกทอรีปัจจุบันของแต่ละเชลล์
  • ประวัติของแต่ละเชลล์
  • ถ้าเป็นไปได้ตัวแปรสภาพแวดล้อมของพวกเขา

คำตอบ:


19

เป็นไปไม่ได้ที่จะบันทึกเซสชันแบบเต็มหน้าจอ

สิ่งที่คุณสามารถทำได้คือการสร้างสิ่งที่เหมาะสม.screenrcซึ่งจะติดตั้งบางสิ่งหลังจากที่คุณรีสตาร์ทระบบ

นี่คือความคิดเห็นต่อสิ่งที่คุณระบุไว้:

  • จำนวนของเชลล์ที่เปิด
  • ชื่อของแต่ละเชลล์
  • ไดเรกทอรีปัจจุบันของแต่ละเชลล์

ฉันใช้สิ่งนี้ใน.screenrcการเปิดเปลือกเฉพาะเมื่อเริ่มต้น:

## set the default shell
shell                   zsh

# screens
screen -t 'zsh'
screen -t 'mutt' mutt
screen -t 'zsh' /home/user/bin/scriptToRun
[..]

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

  • ประวัติของแต่ละเชลล์

คุณเคยคิดที่จะแบ่งปันประวัติความเป็นมาของหอยในการประชุมของคุณหรือไม่? IMHO ทำให้สิ่งนี้ง่ายขึ้นมาก ใน ZSH มันทำกับsetopt SHARE_HISTORYคุณ.zshrc

  • ถ้าเป็นไปได้ตัวแปรสภาพแวดล้อมของพวกเขา

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


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

cd เป็นฟังก์ชั่นในตัวของเชลล์ของคุณคำสั่ง cd ไม่เข้าท่านอก "shell" :-) แต่คุณสามารถใส่สคริปต์ที่บรรจุ cd / foo / bar ไว้หลัง shebang ได้ จากนั้นเชลล์ใหม่ของคุณจะเปลี่ยนเป็นไดเรกทอรีนี้
echox

ใช่ฉันเข้าใจความแตกต่างนี้ฉันแค่คิดว่าคำสั่งถูกส่งผ่านไปยังเชลล์แล้วดำเนินการในเชลล์ แต่ฉันไม่มีปัญหาในการเขียนสคริปต์การเริ่มต้น :-) ประวัติที่แชร์เป็นแนวคิดที่ยอดเยี่ยม btw ฉันชอบมันมาก
บาร์เธเลมี

10

ผมเคยเจอโครงการที่เรียกว่าหน้าจอเซสชั่น ช่วยให้คุณสามารถบันทึกและโหลดเซสชัน GNU Screen ใหม่ได้ในระดับหนึ่ง


2

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


0

ฉันสร้างสิ่งที่คล้ายกันในโซลาริสเมื่อหลายปีก่อน ไม่แม้แต่เกี่ยวกับหน้าจอ มันเกี่ยวข้องกับเซสชัน "ถ้า $ TTY = อะไรก็ตาม" echox มีความคิดที่ถูกต้อง

คำแนะนำ: หากคุณทำสิ่งนี้กับหลาย ๆ เครื่องให้จำไว้ว่าแต่ละเครื่องสมควรได้รับนิยามของสิ่งที่ควรทำเมื่อคุณเข้าสู่ระบบที่นั่นแทนที่จะเป็นสิ่งเดียวกันต่อ nfs ของคุณ / home หรือที่คล้ายกัน

HTH, -pbr

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