วิธีโฮสต์เทอร์มินัล Linux หลายตัวสำหรับการดูและการทำงานร่วมกันกับ Wemux
ในบทความก่อนหน้านี้ เราได้อธิบายวิธีใช้ tmux (Terminal MUltipleXer) เพื่อเข้าถึงและควบคุมเทอร์มินัล (หรือหน้าต่าง) จำนวนหนึ่งจากเทอร์มินัลเดียว
ตอนนี้เราจะแนะนำให้คุณรู้จักกับ wemux (tmux เวอร์ชันที่มีผู้ใช้หลายราย) ซึ่งไม่เพียงแต่รวมคุณลักษณะที่มีให้โดย tmux เท่านั้น แต่ยังรวมถึง อนุญาตให้ผู้ใช้โฮสต์สภาพแวดล้อมแบบหลายเทอร์มินัลซึ่งลูกค้าสามารถเข้าร่วมในโหมดดูหรือทำงานร่วมกันได้
กล่าวอีกนัยหนึ่ง คุณสามารถโฮสต์เซสชั่นที่ผู้อื่นสามารถดูสิ่งที่คุณทำในเทอร์มินัล (เช่น เพื่อทำการสาธิต) หรือเพื่อทำงานร่วมกับพวกเขาได้
เพื่อช่วยให้คุณได้รับประโยชน์สูงสุดจาก wemux ฉันขอแนะนำให้คุณดูคำแนะนำก่อนหน้าเกี่ยวกับ tmux ก่อนที่จะอ่านบทความปัจจุบัน
การติดตั้งและกำหนดค่าเทอร์มินัลผู้ใช้หลายคนของ Wemux
ตามข้อกำหนดเบื้องต้นก่อนที่จะติดตั้ง wemux เราจะใช้ git เพื่อโคลนที่เก็บของโปรเจ็กต์ในระบบในเครื่องของเรา หากคำสั่งต่อไปนี้แสดงว่าไม่พบ git ในระบบของคุณ:
which git
ตามที่ระบุโดย:
/usr/bin/which: no git in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
ติดตั้งก่อนดำเนินการต่อ (ใช้ yum หรือ ความถนัด ขึ้นอยู่กับการกระจายของคุณ):
yum install git [On RedHat based systems]
dnf install git [On Fedora 22+ versions]
aptitude install git [On Debian based systems]
แล้ว,
1. โคลนพื้นที่เก็บข้อมูลระยะไกล
git clone git://github.com/zolrath/wemux.git /usr/local/share/wemux
2. สร้างลิงก์สัญลักษณ์ไปยังไฟล์ปฏิบัติการ wemux ภายใน /usr/local/bin
หรือไดเร็กทอรีอื่นใน ` PATH ของคุณ ตัวแปร
ln -s /usr/local/share/wemux/wemux /usr/local/bin/wemux
3. คัดลอกไฟล์การกำหนดค่าตัวอย่างการกำหนดค่าลงใน /usr/local/etc
cp /usr/local/share/wemux/wemux.conf.example /usr/local/etc/wemux.conf
และแทรกบรรทัดต่อไปนี้:
host_list=(user1 user2 user3)
โดยที่ user1
, user2
และ user3
เป็นผู้ใช้ที่ได้รับอนุญาตให้เริ่มเซิร์ฟเวอร์ wemux คุณสามารถเพิ่มผู้ใช้ได้มากเท่าที่ต้องการ โดยคั่นด้วยช่องว่าง ผู้ใช้รายอื่นจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ wemux ที่ทำงานอยู่ได้ แต่จะไม่ได้รับอนุญาตให้เริ่มเซิร์ฟเวอร์
ขอแนะนำเทอร์มินัลผู้ใช้หลายคนของ wemux
เพื่อให้สิ่งต่าง ๆ ง่ายขึ้น โปรดทราบว่าคุณสามารถนึกถึง wemux เป็นเครื่องมือที่อำนวยความสะดวกในการดูคอนโซลและการทำงานร่วมกันร่วมกันในเซสชัน tmux เดียวกัน
ตามที่อธิบายไว้ก่อนหน้านี้ ในไฟล์การกำหนดค่า (/usr/local/etc/wemux.conf
) คุณต้องระบุแล้วว่าผู้ใช้รายใดจะได้รับอนุญาตให้เริ่มเซิร์ฟเวอร์ wemux หรืออีกนัยหนึ่งคือเซสชัน tmux ที่ผู้ใช้รายอื่นสามารถแนบมาได้ ในบริบทนี้ “ผู้ใช้” เหล่านี้เรียกว่าลูกค้า
สรุป:
- เซิร์ฟเวอร์ Wemux: เซสชัน tmux
- ไคลเอ็นต์ Wemux: ผู้ใช้ที่เข้าร่วมเซสชัน tmux ที่อธิบายไว้ข้างต้น
คำสั่งเหล่านี้คือคำสั่งที่ใช้จัดการเซิร์ฟเวอร์ wemux:
- wemux หรือ wemux start: เริ่มต้นเซิร์ฟเวอร์ wemux ใหม่ (หากไม่มีอยู่ หรือสร้างขึ้นใหม่) และสร้างซ็อกเก็ตใน
/tmp/wemux-wemux
ซึ่งจำเป็นต้องตั้งค่าการอนุญาตเป็น 1777 เพื่อให้ผู้ใช้รายอื่นสามารถเชื่อมต่อหรือแนบไปกับมัน: - การแนบ wemux จะเชื่อมโยงคุณเข้ากับเซิร์ฟเวอร์ wemux ที่มีอยู่
- wemux stop ฆ่าเซิร์ฟเวอร์ wemux และลบซ็อกเก็ตที่สร้างไว้ก่อนหน้านี้ คำสั่งนี้จะต้องดำเนินการจากเทอร์มินัลที่แยกต่างหาก หรือคุณสามารถใช้ exit เชลล์บิวท์อินเพื่อปิดบานหน้าต่างและในที่สุดก็กลับสู่เซสชันเชลล์ปกติของคุณ
- ชื่อผู้ใช้ wemux kick กำจัดผู้ใช้ที่เข้าสู่ระบบผ่าน SSH ออกจากเซิร์ฟเวอร์ wemux และลบเซสชันโกงของเขา/เธอ (เพิ่มเติมเกี่ยวกับเรื่องนี้ในไม่กี่นาที) คำสั่งนี้ต้องการให้เซิร์ฟเวอร์ wemux เริ่มต้นเป็น root หรือมีสิทธิ์ sudo
- wemux config เปิดไฟล์การกำหนดค่าในตัวแก้ไขข้อความที่ระบุโดยตัวแปรสภาพแวดล้อม $EDITOR (เฉพาะในกรณีที่ตัวแปรดังกล่าวได้รับการกำหนดค่าในระบบของคุณ ซึ่งคุณสามารถตรวจสอบได้ด้วย echo $EDITOR ).
chmod 1777 /tmp/wemux-wemux
คำสั่ง tmux ทั้งหมดที่แสดงไว้ก่อนหน้านี้ใช้ได้ภายใน wemux โดยมีข้อดีที่ไคลเอ็นต์อาจแนบกับเซิร์ฟเวอร์ wemux ในโหมดใดโหมดหนึ่งจากสามโหมด .
ในการทำเช่นนั้น ให้ดำเนินการคำสั่งที่พบในคอลัมน์ COMMAND ด้านล่างใน “ลูกค้าเป้าหมาย“ พูดง่ายๆ ก็คือ (จะกลายเป็นลูกค้าจริงเมื่อได้เข้าร่วม wemux เซิร์ฟเวอร์):
Mode | Description | Commands |
Mirror | Read-only, non-interactive | wemux mirror |
Pair | Interactive, client shares cursor with the server | wemux pair |
Rogue | Joins an existing session but allows the client to uses independent windows | wemux rogue |
ลองมาดูที่ screencast ต่อไปนี้สำหรับการสาธิตโดยย่อของโหมดไคลเอนต์ทั้งสามโหมดที่ระบุไว้ในตารางด้านบน (ลำดับเดียวกัน) โปรดทราบว่าฉันใช้ Terminator เพื่อเริ่มต้นเซิร์ฟเวอร์ (ในฐานะผู้ใช้ gacanepa) ในบานหน้าต่างด้านซ้าย และเชื่อมต่อไคลเอนต์ (ในฐานะผู้ใช้ทดสอบ) ในบานหน้าต่างด้านขวา
ดังนั้น คุณจะสามารถดูได้อย่างง่ายดายว่าเซิร์ฟเวอร์ wemux ทำงานอย่างไรในขณะที่โต้ตอบกับไคลเอ็นต์เครื่องเดียว ด้วยการทำซ้ำขั้นตอนที่ไคลเอนต์ใช้เพื่อเข้าร่วมเซิร์ฟเวอร์ wemux คุณสามารถให้ไคลเอนต์หลายตัวทำแบบเดียวกันพร้อมกันได้
คุณสมบัติอื่นๆ ของ wemux Terminal
หากย่อหน้าข้างต้นไม่ได้ให้เหตุผลเพียงพอที่จะลองใช้ wemux หวังว่าฟีเจอร์ต่อไปนี้จะทำให้คุณโน้มน้าวใจได้
ผู้ใช้ที่ได้รับอนุญาตให้เริ่มเซิร์ฟเวอร์ wemux (ตามคำสั่ง host_list ในไฟล์ /usr/local/etc/wemux.conf
) สามารถโฮสต์ได้ หลายเซสชันพร้อมกันหากคำสั่ง allow_server_change ถูกตั้งค่าเป็นจริง:
allow_server_change="true"
หากต้องการเริ่มต้นสองเซสชันชื่อ la และ emea ให้ดำเนินการคำสั่งต่อไปนี้ในเทอร์มินัลสองแห่งที่แตกต่างกัน:
wemux join la && wemux start
wemux join emea && wemux start
อีกครั้ง เราจะใช้ เทอร์มิเนเตอร์ เพื่อดูเทอร์มินัลทั้งสองพร้อมกัน (ซึ่งคล้ายกับสิ่งที่คุณคาดหวังได้โดยการสลับไปใช้คอนโซลอื่นด้วย Ctrl+Alt+F1 ผ่าน F7):
หลังจากที่คุณกด Enter ทั้งสองเซสชันจะเริ่มต้นแยกกัน:
จากนั้น คุณสามารถให้ลูกค้าเข้าร่วมเซสชั่นใดก็ได้ด้วย:
wemux join la && wemux attach
Or
wemux join emea && wemux attach
สุดท้าย หากต้องการให้ผู้ใช้ระยะไกล (เชื่อมต่อผ่าน SSH) เริ่มต้นโดยอัตโนมัติบน wemux หลังจากเข้าสู่ระบบ และยกเลิกการเชื่อมต่อผู้ใช้จากเซิร์ฟเวอร์เมื่อแยกออก ให้เพิ่ม stanza ติดตามต่อท้ายไฟล์ ~/.bash_profile
:
wemux [mode]; exit
โดยที่ [mode]
เป็นหนึ่งในโหมดไคลเอนต์ที่แสดงไว้ก่อนหน้านี้
อีกทางหนึ่ง ลูกค้าสามารถเปลี่ยนจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งได้โดยใช้:
exit
wemux join [server name here] && wemux [mode]
สรุป
ในบทความนี้ เราได้อธิบายวิธีใช้ wemux เพื่อตั้งค่าการดูเทอร์มินัลของคุณจากระยะไกล (และแม้กระทั่งการทำงานร่วมกันร่วมกัน) ได้อย่างง่ายดาย wemux เป็นซอฟต์แวร์โอเพ่นซอร์สที่เผยแพร่ภายใต้ใบอนุญาต MIT และคุณสามารถปรับแต่งเพิ่มเติมได้ตามความต้องการ
พบซอร์สโค้ดได้ใน wemux Github และมีอยู่ในระบบของคุณใน /usr/local/bin/wemux ในพื้นที่เก็บข้อมูล Github เดียวกัน คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมนี้ได้
คุณพบว่าโพสต์นี้มีประโยชน์หรือไม่? โปรดแจ้งให้เราทราบว่าคุณคิดอย่างไรโดยใช้แบบฟอร์มด้านล่าง