tmux: เซสชันที่แชร์, ผู้ใช้หนึ่งคนในบานหน้าต่าง, อีกคนหนึ่งในบานหน้าต่างอื่น, เคอร์เซอร์สองตัวที่แตกต่างกัน


17

ฉันตัดสินใจลอง tmux: ได้อ่านเอกสารและ googling ไปรอบ ๆ พยายามหาวิธีที่จะให้ผู้ใช้สองคนแบ่งปันเซสชันโดยใช้เคอร์เซอร์ที่แตกต่างกัน

อย่างไรก็ตามการให้สิทธิ์ 777 กับซ็อกเก็ตหรือสร้างกลุ่มchgrpไอเอ็นจีซ็อกเก็ตและการเพิ่มผู้ใช้ทั้งสองดูเหมือนว่าจะอนุญาตให้ใช้ซ็อกเก็ตเดียวกันเพื่อแชร์เซสชันด้วยเคอร์เซอร์เดียว: ผู้ใช้ทั้งสองสามารถเขียนได้ ตำแหน่งเคอร์เซอร์เดียวกัน

ตอนนี้ผู้ใช้ทั้งสองอยู่ในโฮมเซิร์ฟเวอร์เดียวกันกับ ssh และแนวคิดก็คือจะต้องมี:

  • เทอร์มินัลใน a สมมุติว่าบานหน้าต่างด้านซ้ายซึ่งฉันสามารถพิมพ์คำสั่งได้
  • เทอร์มินัลอื่นในบานหน้าต่างด้านขวาซึ่งฉันสามารถเห็นผู้ใช้อื่นพิมพ์คำสั่งในเทอร์มินัลของเขา
  • สิ่งเดียวกันสำหรับผู้ใช้อื่น ๆ

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

มีวิธีที่จะทำให้แนวคิดนี้ทำงานร่วมกับการสนับสนุนการเขียนในเทอร์มินัลของอีกฝ่ายหรือไม่?

วิธีที่ดีกว่าในการทำเช่นนี้คืออะไร?


นี้จะช่วยให้unix.stackexchange.com/questions/2523/...
ผ่อนผัน

@clement No ที่ทำให้ผู้ใช้สองคนเห็นสิ่งเดียวกัน กล่าวคือมีเคอร์เซอร์เดียวเท่านั้นและทั้งคู่อยู่ในบานหน้าต่างด้านขวาหรือทั้งสองอยู่ในบานหน้าต่างด้านซ้าย แต่ต้องขอบคุณต่อไป
ferhtgoldaraz

คำตอบ:


20

คำถามนี้เป็นบิตเก่า แต่ผมกำลังมองหาบางสิ่งบางอย่างที่คล้ายกันและพบว่ามันนี่ มันสร้างเซสชั่นที่สองที่แบ่งปันหน้าต่างกับครั้งแรก แต่มีมุมมองและเคอร์เซอร์ของตัวเอง

tmux new-session -s alice
tmux new-session -t alice -s bob

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

แก้ไข:ตามคำแนะนำข้อความจากคำตอบอื่น :

ก่อนอื่นให้เพิ่มกลุ่มสำหรับผู้ใช้ tmux

export TMUX_GROUP=tmux
addgroup $TMUX_GROUP

สร้างไดเร็กทอรีโดยตั้งกลุ่มเป็น $ TMUX_GROUP และใช้ setgid bit เพื่อให้ไฟล์ที่สร้างขึ้นภายในไดเรกทอรีนั้นมีกลุ่มที่ตั้งเป็น $ TMUX_GROUP โดยอัตโนมัติ

mkdir /var/tmux
chgrp $TMUX_GROUP /var/tmux
chmod g+ws /var/tmux

ถัดไปตรวจสอบให้แน่ใจว่าผู้ใช้ที่ต้องการแชร์เซสชันเป็นสมาชิกของ $ TMUX_GROUP

usermod -aG $TMUX_GROUP user1
usermod -aG $TMUX_GROUP user2

ยินดีต้อนรับสู่ * nix.SE! นี่เป็นคำตอบแรกที่ค่อนข้างดี แต่ฉันขอแนะนำให้คุณพิจารณาเพิ่มบิตที่มีประโยชน์มากที่สุดจากลิงก์สองลิงก์ในบรรทัด (เพื่อหลีกเลี่ยงการหมุนลิงก์) :)
HalosGhost

4
การทำเช่นนี้ช่วยให้ผู้ใช้สองคนป้อนข้อมูลไปยังหน้าต่างที่แตกต่างกัน แต่ไม่บานหน้าต่างที่แตกต่างกันภายในหน้าต่างเดียวกัน (tmux 1.6)
awatts

2

คุณสามารถลองใช้งานเซสชัน tmux ที่แยกกันสองรายการพร้อมกัน - หนึ่งรายการสำหรับคุณและเซสชันที่สองสำหรับผู้ใช้รายอื่น จากนั้นใช้ระบบหน้าต่างของระบบปฏิบัติการของคุณเพื่อจัดเรียงเทอร์มินัลสองเครื่องเคียงข้างกันหนึ่งอันสำหรับคุณและอีกอันหนึ่งสำหรับเขา หากคุณต้องการเขียนในเทอร์มินัลของเขาเพียงแค่เลือกมันเพื่อป้อนข้อมูล

คุณรัน (แต่ละคำสั่งในเทอร์มินัลของตนเอง):

tmux new-session -s Alice
tmux new-session -s Bob

จากนั้นบ็อบรัน (อีกครั้งแต่ละคำสั่งในเทอร์มินัลของตนเอง):

tmux attach -t Alice
tmux attach -t Bob

หากคุณไม่มีระบบหน้าต่างที่รองรับการแสดงผลแบบเคียงข้างกันหรือคุณไม่ชอบเมาส์คุณสามารถตั้งค่านี้ได้อย่างระมัดระวังในเซสชั่นหน้าจอ / tmux wrapper


ขอบคุณ แต่ผมจำเป็นต้องนี้ในสภาพแวดล้อมเซิร์ฟเวอร์จึงไม่มีหน้าต่าง (เรากำลังล้อเล่นกับวิธีการทำงานของเซิร์ฟเวอร์)
ferhtgoldaraz

1
@ferhtgoldaraz: คุณสามารถใช้เซสชั่น tmux แบบแยกส่วนเพื่อให้มีสองส่วนย่อย!
แอช

@Yuki: น่าสนใจฉันจะตรวจสอบว่า
ferhtgoldaraz

@Ashe คุณหมายถึงอะไรโดยแบ่งเซสชั่น tmux และสองส่วนย่อย? กรุณาอธิบายเพิ่มเติมหน่อยได้ไหม?
elquimista

@elquimista สวัสดีจาก 4 ปีที่แล้ว! สิ่งที่ฉันหมายถึงคือการเรียกใช้ tmux แล้วแบ่งหน้าต่างออกเป็นสองบานหน้าต่าง (เช่นกับ ctrl-b% หรือ ctrl-b ") จากนั้นเรียกใช้ tmux (อีกครั้ง) ในแต่ละบานหน้าต่างแบ่งปันเซสชันตามคำแนะนำในคำตอบ
Ashe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.