เมื่อทำงานกับเทอร์มินัลใน Linux บ่อยครั้ง คุณจะต้องเผชิญกับความยุ่งยากเมื่อต้องการทำงานหลายอย่างพร้อมกัน การใช้หน้าต่างหรือแท็บหลายอันก็ได้ แต่เมื่อล็อกอินเข้าระบบระยะไกล คุณไม่ได้มีการเข้าถึงแท็บหรือหน้าต่างเทอร์มินัลหลายอันเสมอไป นี่คือที่มาของเครื่องมือสำคัญสองตัวในโลกผู้ดูแลระบบ Linux คือ tmux และ screen แต่ในชุมชนโอเพนซอร์ส การเลือก بينهماไม่ได้ชัดเจนว่าตัวไหนเหมาะกับการใช้งานของคุณมากกว่า วันนี้เราจะนำพาคุณเปรียบเทียบ tmux กับ screen เพื่อตัดสินใจว่าตัวไหนเป็น Terminal Multiplexer ที่ดีที่สุด
คุณสมบัติหลักของ Terminal Multiplexer
เนื่องจาก tmux และ screen ทั้งคู่เป็น Terminal Multiplexer จึงมีคุณสมบัติหลักบางอย่างที่ทำให้ความแตกต่างระหว่างพวกเขาชัดเจนขึ้น โดยทั่วไปคุณจะกดชุดคีย์พิเศษที่ไม่ได้ถูกใช้งานที่อื่นในระบบ เพื่อใช้คุณสมบัติต่างๆ ของ multiplexer
การ Detach และ Reattach (แยกและต่อกลับ)
คุณสามารถเริ่มเซสชันใน Terminal Multiplexer ทำงานบางอย่าง แล้ว detach ออกเพื่อซ่อนออกจากหน้าจอ ซึ่งยังคงทำให้เซสชันดังกล่าวทำงานต่อไปแม้คุณจะล็อกออทออกไป ทำให้ข้อมูลสำคัญไม่หายไป คุณสามารถ reattach กลับมาเมื่อพร้อมทำงานต่อได้ทุกเมื่อ
การแบ่งหน้าจอ (Split Screen)
คุณยังสามารถแบ่งเซสชันเทอร์มินัลเป็นหลายช่อง (tiles) สร้างเซสชันเทอร์มินัลที่มองเห็นได้พร้อมหลายอันพร้อมกัน เหมาะสำหรับการติดตามทรัพยากรระบบหลายด้าน เช่น พลังงาน RAM CPU และ Disk I/O หรือติดตาม system monitor ขณะคอมไพล์หรือบีบอัดโปรเจกต์ขนาดใหญ่ ทำให้ง่ายต่อการตรวจสอบโหลดระบบหากมีปัญหา
การจัดการเซสชัน (Session Management)
Terminal Multiplexer ช่วยจัดการเซสชันได้หลายวิธี เมื่อ detach หลายเซสชัน คุณสามารถดูรายการทั้งหมดได้ทันที สะดวกหากเริ่มหลายเซสชันแต่ไม่แน่ใจว่าจะกลับไปทำงานอันไหน นอกจากนี้ยังสามารถตั้งชื่อหรือป้ายกำกับเซสชันได้ ทำให้จัดการ workspace ง่ายขึ้น คล้ายกับ virtual desktop ในระบบปฏิบัติการเดสก์ท็อปทั่วไป
คุณสมบัติเด่นของ tmux
คุณสมบัติที่ชอบมากใน tmux คือสามารถควบคุมเซสชันจาก shell prompt ปกติได้โดยไม่ต้องเข้าไปในเซสชันที่สร้างไว้ ตัวอย่างคือการ kill เซสชันด้วยคำสั่ง tmux kill-session หากแน่ใจว่าเสร็จสิ้นกับเซสชัน tmux ใดแล้ว สามารถ kill ได้เลยจาก shell prompt
มี status bar สวยงามอยู่ أسفلหน้าจอ แทนที่จะขึ้นไป佔พื้นที่ prompt ด้านบน ทำให้ workflow ของ tmux มองเห็นง่ายกว่า screen อีกด้วย เซสชันจะ rename เองอัตโนมัติตามคำสั่งที่กำลังรัน ซึ่งมีประโยชน์หากลืมตั้งชื่อเอง
คุณสมบัติเด่นของ screen
คุณสมบัติหลักที่ทำให้ screen โดดเด่นกว่า tmux คือการแชร์เซสชันกับผู้ใช้คนอื่น ได้ดีสำหรับระบบ multi-user ที่มีแอดมินหลายคนทำงานร่วมกันเพื่อ troubleshooting
ข้อดีอีกอย่างคือบน macOS ไม่ต้องติดตั้งผ่าน Homebrew เพราะ screen ติดตั้งมาพร้อมกับเทอร์มินัลแล้ว
screen vs. tmux สรุปสั้นๆ
ถ้าต้องแนะนำตัวเดียว ผมแนะนำ tmux มีหลายเหตุผลทำให้ tmux ดีกว่า ตัวอย่างเช่น สลับ attach เป็น kill-session ได้เลย จบเซสชันโดยไม่ต้องเข้าไปจบคำสั่งแล้วพิมพ์ exit อีกครั้ง Status bar อ่านง่ายกว่า และคำสั่งอ่านเข้าใจง่ายกว่า (human-readable)
สำหรับผู้ใช้ macOS screen อาจสะดวกกว่า เพราะไม่ต้องใช้ Homebrew ก็เริ่มใช้งานได้เลย
อย่าลองดูบทความ Linux อื่นๆ ของเรา เช่น 15 คำสั่ง ls ที่ควรรู้ คู่มือ Git สำหรับมือใหม่ และคู่มือ Bash variables และการใช้งาน