วิธีใช้ tmux บน Linux (และทำไมจึงดีกว่าหน้าจอ)

เผยแพร่แล้ว: 2022-01-29
เทอร์มินัล Linux สุดเก๋บนแล็ปท็อปที่มีเซสชันเชลล์อยู่เบื้องหลัง
fatmawati achmad zaenuri/Shutterstock.com

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

tmux กับ screen

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

คำสั่ง Linux พื้นฐาน 10 คำสั่งสำหรับผู้เริ่มต้น
คำสั่ง Linux พื้นฐาน 10 คำสั่ง ที่เกี่ยวข้อง สำหรับผู้เริ่มต้น

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

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

คำสั่งหน้าจอคืออะไร?

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

โฆษณา

คราวนี้เราจะมาเน้นที่ tmux กัน เราจะพูดถึงวิธีที่ screen จัดการกับคุณลักษณะหรือฟังก์ชันเดียวกัน

สิ่งเดียวที่ทำให้เรารำคาญเกี่ยวกับ screen เราจะพูดถึงมันเมื่อเราไปถึงที่นั่น และดูว่า tmux มีราคาที่ดีกว่านี้หรือไม่

ที่เกี่ยวข้อง: วิธีใช้คำสั่งหน้าจอของ Linux

กำลังติดตั้ง tmux

แม้ว่าโดยทั่วไป screen จะถูกติดตั้งตามค่าเริ่มต้นบนลีนุกซ์รุ่นยอดนิยม แต่ tmux ไม่ใช่ ในการติดตั้ง tmux บน Ubuntu ให้พิมพ์ดังต่อไปนี้:

 sudo apt-get ติดตั้ง tmux 

บน Manjaro คุณสามารถใช้ pacman :

 sudo pacman -Sy tmux 

ใน Fedora 31 ติดตั้ง tmux แล้ว

การเริ่มต้นเซสชัน tmux

ในการเริ่ม tmux เพียงพิมพ์แล้วกด Enter:

 tmux 

หน้าต่างเทอร์มินัลจะแสดงแถบสถานะเมื่อคุณอยู่ในเซสชัน tmux

ด้านขวาของแถบสถานะจะแสดงชื่อโฮสต์ เวลาและวันที่ ด้านซ้ายแสดงข้อมูลที่เกี่ยวข้องกับเซสชันต่อไปนี้:

  • [0]: นี่คือชื่อเซสชัน โดยค่าเริ่มต้น ตัวเลขเหล่านี้จะเริ่มจากศูนย์ เราอธิบายวิธีที่คุณสามารถตั้งชื่อที่มีความหมายให้กับเซสชันด้านล่าง
  • 0:bash*: 0 ระบุว่านี่เป็นหน้าต่างแรกในเซสชันนี้ กระบวนการเดียวที่ทำงานในเซสชันนี้คือ bash หากคุณเรียกใช้โปรแกรม ชื่อของโปรแกรมจะปรากฏขึ้นที่นี่ เครื่องหมายดอกจัน (*) หมายถึงนี่คือหน้าต่างที่คุณกำลังดูอยู่ ทุกครั้งที่คุณสร้างหน้าต่างใหม่ในเซสชัน tmux หมายเลขหน้าต่างและชื่อของโปรแกรมที่ทำงานอยู่ในนั้นจะถูกเพิ่มลงในแถบสถานะ

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

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

โฆษณา

คำสั่งถูกกำหนดให้กับ tmux โดยใช้การกดแป้น และมีสองส่วนสำหรับสิ่งนี้ ขั้นแรก คุณกด Ctrl+B เพื่อเรียกความสนใจของ tmux จากนั้นคุณกดปุ่มถัดไปอย่างรวดเร็วเพื่อส่งคำสั่งไปยัง tmux คำสั่งต่างๆ ทำได้โดยการกดตัวอักษร ตัวเลข เครื่องหมายวรรคตอน หรือปุ่มลูกศร

มันเหมือนกันใน screen ยกเว้นว่าคุณกด Ctrl+A เพื่อเรียกความสนใจ

เมื่อต้องการปิดหน้าต่าง ให้กด Ctrl+B แล้วกด X อย่างรวดเร็ว แถบสถานะจะเปลี่ยนเป็นสีเหลือง จากนั้นระบบจะขอให้คุณยืนยันว่าต้องการปิดหน้าต่าง

กด Y เพื่อปิดหน้าต่างหรือ N หากคุณเปลี่ยนใจ คุณไม่จำเป็นต้องกด Enter หลังจากนั้น Y หรือ N ก็เพียงพอที่จะลงทะเบียนตัวเลือกของคุณ

หากคุณกด Y หน้าต่างจะปิดลง เนื่องจากเป็นหน้าต่างเดียวในเซสชันนี้ เซสชันจึงสิ้นสุดลง

เซสชัน tmux ถูกปิด และคุณกลับไปที่บรรทัดคำสั่งที่คุณเปิดใช้ tmux คุณจะเห็น “[ออก]” ในหน้าต่างเทอร์มินัล

โฆษณา

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

การเริ่มต้น Named tmux Session

หากคุณเริ่มเซสชัน tmux หลายเซสชันเป็นประจำ คุณจะประทับใจกับฟังก์ชันการทำงานที่ให้ชื่อที่สื่อความหมายแก่แต่ละเซสชันได้อย่างรวดเร็ว คุณสามารถตั้งชื่อเซสชันใน screen ได้เช่นกัน แต่จะไม่แสดงที่ใดก็ได้ในหน้าต่างเซสชัน

ในการเริ่ม tmux ด้วยชื่อเซสชัน ให้ใช้คำสั่ง new (เซสชันใหม่) และตัวเลือก -s (ชื่อเซสชัน) เซสชั่นของเราจะเรียกว่า "geek-1" ดังนั้นเราจึงพิมพ์ดังต่อไปนี้:

 tmux ใหม่ -s geek-1 

เมื่อโหลดเซสชัน tmux "geek-1" จะแสดงเป็นรายการแรกในแถบสถานะที่ด้านซ้ายสุด

เซสชัน tmux ที่มีชื่อ "geek-1" ที่ด้านซ้ายของแถบสถานะ

การเพิ่ม Windows เพิ่มเติม

เมื่อต้องการสร้างหน้าต่างใหม่ในเซสชันปัจจุบัน ให้กด Ctrl+B จากนั้นกด C คุณจะได้หน้าต่างเทอร์มินัลว่างในเซสชันปัจจุบัน ดังนั้นเราจะมีบางอย่างที่ทำงานอยู่ในหน้าต่างใหม่นี้ มาเริ่มคำสั่ง dmesg ด้วยตัวเลือก -w (ติดตาม):

 dmesg -w 

ตอนนี้ เรามีสองหน้าต่างในเซสชัน อันหนึ่งกำลังทำงานอยู่ top และอีกอันหนึ่ง dmesg เราสามารถเห็นได้ครั้งละหนึ่งเท่านั้น (เพิ่มเติมในนั้นในขณะนั้น)

โฆษณา

ดูที่ด้านซ้ายของแถบสถานะ เรายังอยู่ในเซสชัน tmux "geek-1" ในหน้าต่างศูนย์ ด้านบนกำลังทำงาน และในหน้าต่างที่หนึ่ง dmesg กำลังทำงาน เครื่องหมายดอกจัน (*) หลัง dmesg บอกเราว่าหน้าต่างใดปรากฏให้เห็น

เมื่อต้องการข้ามไปมาระหว่างหน้าต่าง ให้กด Ctrl+B แล้วกดแป้นใดแป้นหนึ่งต่อไปนี้:

  • N : แสดงหน้าต่างถัดไป
  • P: แสดงหน้าต่างก่อนหน้า
  • 0 ถึง 9: แสดงหน้าต่างหมายเลข 0 ถึง 9

คุณยังสามารถเลือกหน้าต่างจากรายการได้อีกด้วย ถ้าคุณกด Ctrl+B แล้วกด W รายการหน้าต่างจะปรากฏขึ้น

หากต้องการย้ายแถบไฮไลท์สีเหลืองอำพัน ให้กดลูกศรขึ้นหรือลง หน้าแรก หรือสิ้นสุด ส่วนล่างของหน้าจอแสดงตัวอย่างเนื้อหาในหน้าต่างที่ไฮไลต์

กด Enter เพื่อย้ายไปยังหน้าต่างที่ไฮไลต์ หรือ Esc เพื่อออกจากรายการหน้าต่างโดยไม่เปลี่ยน

การถอดและแนบเซสชัน

หากคุณกด Ctrl+B จากนั้นกด D คุณจะแยกเซสชันออก มันจะยังคงทำงานในพื้นหลัง แต่คุณจะไม่สามารถเห็นหรือโต้ตอบกับมันได้

โฆษณา

เราได้เริ่ม top ขึ้นในเซสชันแล้ว ดังนั้นเราจึงมีกระบวนการที่ดำเนินการอยู่เพื่อสาธิตด้วย จากนั้น เรากด Ctrl+B แล้วกด D เซสชันจะหายไปและกลายเป็นเซสชันเบื้องหลัง

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

ในการแนบเซสชันที่แยกออกมา เราจะใช้คำสั่ง attach-session ที่อธิบายตนเองได้พร้อมตัวเลือก -t (เซสชันเป้าหมาย) เราจะระบุชื่อของเซสชันที่เราต้องการเรียกคืนด้วย

เราพิมพ์ดังต่อไปนี้:

 tmux แนบเซสชัน -t geek-1 

เซสชันของเรากลับมาและกลายเป็นเซสชันแบบโต้ตอบที่มองเห็นได้อีกครั้ง

กระบวนการที่ใช้เวลานานหรือต่อเนื่องใดๆ ที่คุณเปิดตัวก่อนแยกเซสชันจะยังคงทำงานในพื้นหลัง (เว้นแต่จะเสร็จสิ้น) เมื่อคุณแนบเซสชัน

screen สามารถทำได้ แต่ไม่ใช่อย่างสังหรณ์ใจ

การจัดการหลายเซสชัน

มาเปิดหน้าต่างเทอร์มินัลอื่นแล้วเริ่มเซสชัน tmux ใหม่ที่เรียกว่า "geek-2":

 tmux ใหม่ -s geek-2 

ในเซสชั่นนั้นเราจะเริ่ม dmesg :

 dmesg -w 

โฆษณา

ตอนนี้ เรามีเซสชัน tmux “geek-1” ดั้งเดิม และเซสชันใหม่ชื่อ “geek-2”

แถบสถานะแสดงให้เราเห็นเซสชันนี้เรียกว่า "geek-2" และมีหนึ่งหน้าต่างที่ทำงาน dmesg

หากเรากด Ctrl+B จากนั้นกด D เราจะแยกเซสชันนั้นออก

แยกเซสชัน tmux geek-2 ในเทอร์มินัล widnow

ย้อนกลับไปในเซสชัน tmux "geek-1" เรากด Ctrl+B จากนั้นกด S เพื่อดูรายการเซสชัน tmux

เพื่อความชัดเจน นี่คือรายการเซสชัน การแสดงผลที่คล้ายกันที่เราเห็นก่อนหน้านี้คือรายการหน้าต่างในเซสชันเดียว

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

โฆษณา

หากคุณกดลูกศรขวา หน้าต่างสำหรับเซสชันที่ไฮไลต์จะปรากฏขึ้น

กด Enter เพื่อย้ายไปยังเซสชันหรือหน้าต่างที่ไฮไลต์ หรือ Esc เพื่อออกจากรายการเซสชันโดยไม่เปลี่ยนเซสชัน หากคุณเลือกเซสชันใหม่ เซสชันปัจจุบันของคุณจะถูกถอดออก และเซสชันที่คุณเลือกจะถูกแนบไปด้วย

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

คำสั่ง screen สามารถทำได้เช่นกันผ่านชุดคำสั่งที่คล้ายกัน

การทำงานกับบานหน้าต่าง

ถ้าคุณกด Ctrl+B แล้วตามด้วยเครื่องหมายอัญประกาศ (“”) คุณจะแบ่งหน้าต่างตามแนวนอนออกเป็นสองบานหน้าต่าง

สิ่งนี้มีผลกับหน้าต่างปัจจุบันเท่านั้น ส่วนอื่นๆ ในเซสชันจะไม่เปลี่ยนแปลง เราใช้คำสั่ง tmux ls ในบานหน้าต่างด้านบนเพื่อแสดงรายการหน้าต่างในเซสชันนี้ มีสองรายการและบรรทัดสถานะบอกเราว่าเราอยู่ในหน้าต่างที่หนึ่ง หากเราข้ามไปที่หน้าต่างศูนย์โดยกด Ctrl+B แล้วกด 0 (ศูนย์) เราจะเห็นว่ามันเหมือนกับที่เราปล่อยทิ้งไว้

โฆษณา

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

เราพิมพ์ดังต่อไปนี้:

uname -a

ls -hl

เมื่อต้องการย้ายจากบานหน้าต่างหนึ่งไปยังอีกบานหน้าต่างหนึ่ง ให้กด Ctrl+B แล้วกดลูกศรขึ้น ลง ซ้าย หรือขวา

คำสั่งที่แตกต่างกันสองคำสั่งในสองบานหน้าต่างในเซสชัน tmux ในเทอร์มินัลม่าย

หากคุณกด Ctrl+B จากนั้นเครื่องหมายเปอร์เซ็นต์ ( %) จะแบ่งบานหน้าต่างปัจจุบันในแนวตั้ง

กด Ctrl+B จากนั้นกด Q เพื่อทำให้ tmux กะพริบหมายเลขของแต่ละบานหน้าต่างโดยสังเขป

ตัวเลขเหล่านี้ใช้ในพรอมต์และข้อความจาก tmux กด Ctrl+B แล้วกด X เพื่อปิดบานหน้าต่างปัจจุบัน แถบสถานะจะเปลี่ยนเป็นสีเหลือง และคุณได้รับพร้อมท์ให้ยืนยันว่าคุณต้องการปิดหมายเลขบานหน้าต่างนั้น กด Y เพื่อลบบานหน้าต่างหรือ N เพื่อปล่อยให้สิ่งต่าง ๆ เหมือนเดิม

หากคุณกด Y บานหน้าต่างจะถูกลบออก

โฆษณา

คำสั่ง screen ยังมีบานหน้าต่างอีกด้วย แต่อีกครั้ง พวกมันใช้งานง่ายน้อยกว่า สิ่งที่ทำให้เรารำคาญเกี่ยวกับ screen คือถ้าคุณแยกเซสชันด้วยบานหน้าต่าง เซสชันนั้นจะหายไปเมื่อคุณเชื่อมต่อเซสชันนั้นใหม่ สิ่งนี้จะแก่เร็วมาก

A Ctrl+B แผ่นโกง

เราได้รวมเอกสารสรุปคำสั่งต่างๆ ที่คุณสามารถใช้ได้ใน tmux ไว้ด้านล่าง

คำสั่งเซสชัน

  • S: รายการเซสชัน
  • $: เปลี่ยนชื่อเซสชันปัจจุบัน
  • D: ถอดเซสชันปัจจุบัน
  • Ctrl+B แล้ว ?: แสดงหน้าวิธีใช้ใน tmux

คำสั่งหน้าต่าง

  • C: สร้างหน้าต่างใหม่
  • ,: เปลี่ยนชื่อหน้าต่างปัจจุบัน
  • W: รายการหน้าต่าง
  • N: ย้ายไปที่หน้าต่างถัดไป
  • P: ย้ายไปที่หน้าต่างก่อนหน้า
  • 0 ถึง 9: ย้ายไปที่หมายเลขหน้าต่างที่ระบุ

คำสั่งบานหน้าต่าง

  • %: สร้างการแบ่งแนวนอน
  • “: สร้างการแบ่งแนวตั้ง
  • H หรือลูกศรซ้าย: เลื่อนไปที่บานหน้าต่างด้านซ้าย
  • I หรือลูกศรขวา: เลื่อนไปที่บานหน้าต่างด้านขวา
  • J หรือลูกศรลง: เลื่อนไปที่บานหน้าต่างด้านล่าง
  • K หรือลูกศรขึ้น: เลื่อนไปที่บานหน้าต่างด้านบน
  • ถาม : แสดงหมายเลขบานหน้าต่างโดยสังเขป
  • O: เลื่อนผ่านบานหน้าต่างตามลำดับ การกดแต่ละครั้งจะนำคุณไปยังรายการถัดไป จนกว่าคุณจะวนซ้ำทั้งหมด
  • }: สลับตำแหน่งของบานหน้าต่างปัจจุบันกับบานหน้าต่างถัดไป
  • {: สลับตำแหน่งของบานหน้าต่างปัจจุบันกับก่อนหน้า
  • X: ปิดบานหน้าต่างปัจจุบัน

เปรียบเทียบอย่างไร

ในแง่ของการทำงาน screen และ tmux ทั้งสองทำงานคล้ายกันและมีคุณสมบัติหลักเหมือนกัน เป็นวิธีที่คุณเข้าถึงคุณลักษณะเหล่านั้นที่แตกต่างอย่างเห็นได้ชัด tmux มอบวิธีในการไปยังฟังก์ชันต่างๆ ที่ลื่นไหลและสะดวกสบายยิ่งขึ้น อย่างไรก็ตาม นั่นไม่ใช่ความแตกต่างเพียงอย่างเดียว

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

screen ในทางกลับกัน บานหน้าต่างทั้งหมดจะหายไปเมื่อคุณถอดและเชื่อมต่อเซสชันใหม่ สิ่งนี้เกือบจะน่ารำคาญมากพอที่จะทำให้คุณหลีกเลี่ยงการถอดออกตั้งแต่แรก

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

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ