มีวิธีบันทึกเซสชัน tmux หรือไม่? กล่าวอีกนัยหนึ่งถ้าฉันรีบูทคอมพิวเตอร์ฉันจะสูญเสียการประชุมตลอดไปหรือไม่?
*** System restart required ***
มีวิธีบันทึกเซสชัน tmux หรือไม่? กล่าวอีกนัยหนึ่งถ้าฉันรีบูทคอมพิวเตอร์ฉันจะสูญเสียการประชุมตลอดไปหรือไม่?
*** System restart required ***
คำตอบ:
ใช่ถ้าคุณรีบูทคอมพิวเตอร์คุณจะสูญเสียเซสชัน ไม่สามารถบันทึกเซสชัน แต่พวกเขาสามารถสคริปต์ สิ่งที่จริง ๆ แล้วสิ่งที่ทำกันมากที่สุดคือการเขียนสคริปต์บางเซสชันเพื่อให้คุณสามารถสร้างใหม่ได้ ตัวอย่างเช่นต่อไปนี้เป็นเชลล์สคริปต์ตัวเล็กสำหรับสร้างเซสชัน:
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [ $? != 0 ]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
นี่คือสิ่งที่มันทำ ครั้งแรกก็จะตรวจสอบว่ามีเซสชั่นใด ๆ ที่มีชื่ออยู่แล้ว (ในกรณีนี้ชื่อเดิมมากคือ "สคริปต์") กับtmux ได้เซสชั่น มันจะตรวจสอบรหัสส่งคืน หากมีเซสชั่นอย่างต่อเนื่องด้วยชื่อนั้นแล้วมันจะข้ามรอบ "ถ้า" และตรงไปที่บรรทัดสุดท้ายที่มันแนบมากับเซสชั่น มิฉะนั้นจะสร้างเซสชันและส่งกุญแจไปให้ (เพียงเรียกใช้สคริปต์แบบสุ่มในตอนนี้) จากนั้นจะออกจากบล็อก "if" และสิ่งที่แนบมา
นี้เป็นอย่างมากตัวอย่างเล็ก ๆ น้อย ๆ คุณสามารถสร้างหลายหน้าต่างบานหน้าต่างและสิ่งที่คล้ายกันก่อนที่คุณจะแนบ
นี่จะไม่ใช่สิ่งเดียวกันกับที่คุณถาม หากคุณทำการเปลี่ยนแปลงใด ๆ ในเซสชันเช่นคุณเปลี่ยนชื่อหน้าต่างและสร้างบานหน้าต่างใหม่ในนั้นหากคุณรีบูตการเปลี่ยนแปลงเหล่านั้นจะไม่ได้รับการบันทึกแน่นอน
มีเครื่องมือบางอย่างที่ทำให้ขั้นตอนการเขียนสคริปต์ง่ายขึ้นแม้ว่าฉันจะชอบทำสิ่งต่างๆด้วยตนเอง (ฉันคิดว่ามันมีประโยชน์มากกว่า) เครื่องมือเหล่านี้จะTmuxinatorและTeamocil
แหล่งข้อมูลหลักของฉันคือหนังสือ "The Pragmatic Bookshelf" Tmux
tmux send-keys ...
บรรทัดคืออะไร
some command; if [ $? != 0 ]; then .....
เป็นเรื่องง่ายมากขึ้นในการเขียน (และการอ่าน) if ! some command; then .....
เป็น:
ฉันเขียนสคริปต์ทุบตีง่าย ๆที่ยังคงอยู่เซสชัน tmux เปิด windows และไดเรกทอรีทำงานปัจจุบันในแต่ละ
เรียกว่าเป็นอย่างนั้นด้วยตนเองหรือเป็นระยะจาก cron (เพราะคุณอาจลืม):
tmux-session save
~/.tmux-session
มันจะเขียนถึง คืนค่าพวกเขาหลังจากรีบูตเช่น:
tmux-session restore
ฉันพบสิ่งนี้ดีกว่าสคริปต์ Perl ยาวหลายร้อยบรรทัด
ฉันเขียนปลั๊กอิน tmux ที่ช่วยให้คุณบันทึกสภาพแวดล้อม tmux ที่สมบูรณ์และกู้คืนได้ในภายหลัง มันมุ่งมั่นที่จะให้รายละเอียดอย่างแท้จริงเพื่อให้คุณมีความรู้สึกที่คุณไม่เคยออกจาก tmux
https://github.com/tmux-plugins/tmux-resurrect
อัปเดต: ตอนนี้มีปลั๊กอินtmux-continuumที่ทำการบันทึกพื้นหลังอัตโนมัติของสภาพแวดล้อม tmux อีกทางเลือกหนึ่งคือ * โดยอัตโนมัติ * จะเรียกคืน tmux env หลังจากรีบูตคอมพิวเตอร์
tmuxinatorเป็นเครื่องมือที่เขียนใน Ruby ซึ่งสามารถใช้เพื่อสร้างและจัดการเซสชัน tmux ได้อย่างง่ายดาย มันสามารถใช้ในการสร้างโครงการซึ่งในภายหลังสามารถยกตัวอย่างเช่นเดียวกับเซสชั่น tmux
ลองพิจารณาวิธีแก้ปัญหาบางส่วนที่นี่
ผู้เขียนสร้างฟังก์ชันที่บันทึกประวัติของเซสชัน tmux เพื่อคงสถานะของเซสชัน tmux ที่โพสต์เซิร์ฟเวอร์รีบูต
ฉันใช้https://github.com/jimeh/tmuxifierสำเร็จสำหรับการสร้างเซสชันใหม่ สามารถติดตั้งได้โดยไม่ต้องใช้ทับทิมเพียงแค่ใช้คอมไพล์
ตัวอย่างอธิบายได้ด้วยตนเองเช่น: https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh