วิธีใช้ tmux บน Linux (และทำไมจึงดีกว่าหน้าจอ)
เผยแพร่แล้ว: 2022-01-29 คำสั่ง Linux tmux
เป็นเทอร์มินัลมัลติเพล็กเซอร์ เช่น screen
. ผู้สนับสนุนจำนวนมากและแกนนำ ดังนั้นเราจึงตัดสินใจเปรียบเทียบทั้งสอง tmux
ดีกว่าจริง ๆ หรือเป็นเพียงกรณีของการเลือกสิ่งที่คุณรู้?
tmux กับ screen
ทั้งคำสั่ง screen
tmux
และ GNU เป็นเทอร์มินัลมัลติเพล็กเซอร์ ช่วยให้คุณมีหลายหน้าต่างภายในหน้าต่างเทอร์มินัลเดียว และข้ามไปมาระหว่างหน้าต่างเหล่านั้นได้ หน้าต่างสามารถแบ่งออกเป็นบานหน้าต่าง ซึ่งแต่ละบานจะมีบรรทัดคำสั่งอิสระ
คุณยังสามารถแยกเซสชันออกและเซสชันนั้นจะกลายเป็นเอนทิตีที่ไม่มีส่วนหัวที่ทำงานอยู่เบื้องหลัง—คุณยังสามารถปิดหน้าต่างเทอร์มินัลที่เปิดใช้งานเซสชันนั้นได้อีกด้วย เมื่อพร้อมแล้ว คุณสามารถเปิดหน้าต่างเทอร์มินัลใหม่และแนบเซสชันที่ยังคงทำงานอยู่อีกครั้งได้ คุณสามารถทำได้ผ่านการเชื่อมต่อ 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" จะแสดงเป็นรายการแรกในแถบสถานะที่ด้านซ้ายสุด
การเพิ่ม 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-1" เรากด Ctrl+B จากนั้นกด S เพื่อดูรายการเซสชัน tmux
เพื่อความชัดเจน นี่คือรายการเซสชัน การแสดงผลที่คล้ายกันที่เราเห็นก่อนหน้านี้คือรายการหน้าต่างในเซสชันเดียว
คุณสามารถย้ายแถบไฮไลท์สีเหลืองอำพันได้โดยกดลูกศรขึ้นและลง หน้าแรก และสิ้นสุด ส่วนล่างจะแสดงตัวอย่างเนื้อหาในเซสชันที่ไฮไลต์
หากคุณกดลูกศรขวา หน้าต่างสำหรับเซสชันที่ไฮไลต์จะปรากฏขึ้น
กด Enter เพื่อย้ายไปยังเซสชันหรือหน้าต่างที่ไฮไลต์ หรือ Esc เพื่อออกจากรายการเซสชันโดยไม่เปลี่ยนเซสชัน หากคุณเลือกเซสชันใหม่ เซสชันปัจจุบันของคุณจะถูกถอดออก และเซสชันที่คุณเลือกจะถูกแนบไปด้วย
เราแยกเซสชัน "geek-2" ออกก่อนทำสิ่งนี้ อย่างไรก็ตาม คุณสามารถทำเช่นนี้กับเซสชันที่ยังคงแนบอยู่กับหน้าต่างเทอร์มินัลเดิม เมื่อคุณทำเช่นนั้น การเปลี่ยนแปลงหน้าจอใดๆ จะปรากฏขึ้นพร้อมกันในทั้งสองเซสชัน tmux
คำสั่ง screen
สามารถทำได้เช่นกันผ่านชุดคำสั่งที่คล้ายกัน
การทำงานกับบานหน้าต่าง
ถ้าคุณกด Ctrl+B แล้วตามด้วยเครื่องหมายอัญประกาศ (“”) คุณจะแบ่งหน้าต่างตามแนวนอนออกเป็นสองบานหน้าต่าง
สิ่งนี้มีผลกับหน้าต่างปัจจุบันเท่านั้น ส่วนอื่นๆ ในเซสชันจะไม่เปลี่ยนแปลง เราใช้คำสั่ง tmux ls
ในบานหน้าต่างด้านบนเพื่อแสดงรายการหน้าต่างในเซสชันนี้ มีสองรายการและบรรทัดสถานะบอกเราว่าเราอยู่ในหน้าต่างที่หนึ่ง หากเราข้ามไปที่หน้าต่างศูนย์โดยกด Ctrl+B แล้วกด 0 (ศูนย์) เราจะเห็นว่ามันเหมือนกับที่เราปล่อยทิ้งไว้
เหล่านี้เป็นบรรทัดคำสั่งอิสระสองบรรทัด ไม่ใช่สองมุมมองในหน้าต่างเดียว พวกมันเป็นเปลือกที่แตกต่างกันและแยกจากกัน เราสามารถแสดงสิ่งนี้ได้โดยใช้คำสั่งที่แตกต่างกันในแต่ละบานหน้าต่าง
เราพิมพ์ดังต่อไปนี้:
uname -a
ls -hl
เมื่อต้องการย้ายจากบานหน้าต่างหนึ่งไปยังอีกบานหน้าต่างหนึ่ง ให้กด Ctrl+B แล้วกดลูกศรขึ้น ลง ซ้าย หรือขวา
หากคุณกด 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
มีอะไรอีกมากมาย ซึ่งรวมถึงความสามารถในการเขียนสคริปต์ที่ยืดหยุ่นอย่างไม่น่าเชื่อ คุณเป็นหนี้ให้ตัวเองเพื่อตรวจสอบ
คำสั่งลินุกซ์ | ||
ไฟล์ | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · เข้าร่วม · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · ดู · strings · พิมพ์ · เปลี่ยนชื่อ · zip · unzip · เมานต์ · umount · ติดตั้ง · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · แพทช์ · แปลง · rclone · ฉีก · srm | |
กระบวนการ | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · หมดเวลา · ผนัง · ใช่ · ฆ่า · หลับ · sudo · su · เวลา · groupadd · usermod · กลุ่ม · lshw · ปิดระบบ · รีบูต · หยุด · poweroff · passwd · lscpu · crontab · วันที่ · bg · fg | |
ระบบเครือข่าย | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ