Cách sử dụng tmux trên Linux (và tại sao nó tốt hơn Screen)

Tác giả sysadmin, T.M.Một 29, 2023, 09:20:20 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách sử dụng tmux trên Linux (và tại sao nó tốt hơn Screen)


Lệnh tmux của Linux có thực sự tốt hơn Screen không? Chúng tôi đã thử nó để tìm hiểu.

Cài đặt tmux từ kho lưu trữ của bản phân phối Linux, sau đó chạy "tmux" trong thiết bị đầu cuối Linux. Bạn có thể đặt cho mỗi phiên tmux một tên duy nhất, tạo các cửa sổ trong mỗi phiên và đặt các cửa sổ đó vào các ngăn.

Lệnh Linux tmux là một bộ ghép kênh đầu cuối, như screen. Những người ủng hộ nó rất nhiều và có tiếng nói, vì vậy chúng tôi quyết định so sánh cả hai. Thực sự tmux tốt hơn hay đó chỉ là trường hợp bạn thích những gì bạn biết hơn?

1. tmux so với Screen

Cả hai lệnh tmux và GNU đều là bộ ghép kênh đầu cuối. Chúng cho phép bạn có nhiều cửa sổ trong một cửa sổ đầu cuối duy nhất và chuyển qua lại giữa chúng. Một cửa sổ có thể được chia thành các ô, mỗi ô cung cấp cho bạn một dòng lệnh độc lập screen

Bạn cũng có thể tách một phiên và nó trở thành một thực thể không có đầu chạy ở chế độ nền---thậm chí bạn có thể đóng cửa sổ đầu cuối đã khởi chạy phiên đó. Khi đã sẵn sàng, bạn có thể mở một cửa sổ terminal mới và gắn lại phiên vẫn đang chạy. Bạn cũng có thể thực hiện việc này qua kết nối SSH.

Bạn có thể tách phiên trên một máy tính, về nhà và đăng nhập vào máy tính từ xa. Khi được kết nối lại, bạn có thể gắn lại phiên nền và sử dụng lại phiên đó một cách tương tác.

2. Screen Command là gì?

Lệnh này screen cũng là một bộ ghép kênh đầu cuối và có rất nhiều tùy chọn. Để biết thông tin chi tiết về mọi thứ bạn có thể làm với nó, hãy xem bài viết chuyên sâu của chúng tôi.

Lần này chúng ta sẽ tập trung vàotmux. Khi tiếp tục, chúng tôi sẽ đề cập đến cách screen xử lý cùng một tính năng hoặc chức năng.

Chỉ có một điều làm chúng tôi khó chịu screen. Chúng tôi sẽ đề cập đến điều đó khi chúng tôi đạt được điều đó và xem liệu tmux giá vé có tốt hơn không.

3. Cài đặt tmux

Mặc dù Screen thường được cài đặt mặc định trên các bản phân phối Linux phổ biến, nhưng tmux thì không. Để cài đặt tmux trên Ubuntu, gõ như sau:

Mã nguồn [Chọn]
sudo apt-get install tmux
Trên Manjaro bạn có thể sử dụng pacman:

Mã nguồn [Chọn]
sudo pacman -Sy tmux
Trên Fedora 31, tmux đã được cài đặt.

4. Bắt đầu phiên tmux

Để bắt đầu tmux, chỉ cần gõ nó và nhấn Enter:

Mã nguồn [Chọn]
tmux
Cửa sổ terminal sẽ hiển thị thanh trạng thái khi bạn đang trong tmux phiên.


Phía bên phải của thanh trạng thái hiển thị tên máy chủ cũng như ngày và giờ. Phía bên trái hiển thị thông tin liên quan đến phiên sau:

  • : Đây là tên phiên. Theo mặc định, chúng được đánh số, bắt đầu bằng số 0. Chúng tôi đề cập đến cách bạn có thể đặt tên có ý nghĩa cho các phiên bên dưới.
  • 0:bash*: Số 0 cho biết đây là cửa sổ đầu tiên trong phiên này. Quá trình duy nhất chạy trong phiên này là bash. Nếu bạn chạy một chương trình, tên của nó sẽ xuất hiện ở đây. Dấu hoa thị (*) có nghĩa đây là cửa sổ bạn đang xem. Mỗi lần bạn tạo một cửa sổ mới trong một tmux phiên, số cửa sổ của nó và tên của chương trình đang chạy trong đó sẽ được thêm vào thanh trạng thái.

Lệnh này screen không cung cấp cho bạn thanh trạng thái theo mặc định. Bạn phải mù quáng và dựa vào trí thông minh của mình để biết chuyện gì đang xảy ra, điều này cần một chút luyện tập. (Trừ khi bạn định cấu hình thanh trạng thái của riêng mình.)

Về mặt tích cực, bạn sẽ không mất một dòng bất động sản nào trong cửa sổ đầu cuối. Tất nhiên, thông thường bạn sẽ mở rộng cửa sổ đầu cuối của mình để khiến việc sử dụng bộ ghép kênh đầu cuối trở nên đáng giá. Trong trường hợp đó, việc mất một dòng trên thanh trạng thái không phải là vấn đề lớn. Chúng tôi đã để hình ảnh của các cửa sổ terminal ở đây ở kích thước mặc định để bạn có thể xem thông tin.

Các lệnh được đưa ra để tmuxsử dụng tổ hợp phím và có hai phần này. Đầu tiên, bạn nhấn Ctrl+B để thu hút tmux sự chú ý của. Sau đó bạn nhấn nhanh phím tiếp theo để gửi lệnh tới tmux. Các lệnh được đưa ra bằng cách nhấn các chữ cái, số, dấu chấm câu hoặc phím mũi tên.

Nó giống nhau trong screen, ngoại trừ việc bạn nhấn Ctrl+A để thu hút sự chú ý.

Để đóng cửa sổ, nhấn Ctrl+B rồi nhấn nhanh X. Thanh trạng thái chuyển sang màu hổ phách. Sau đó, bạn được nhắc xác nhận rằng bạn muốn tắt cửa sổ.

Nhấn Y để đóng cửa sổ hoặc N nếu bạn đổi ý. Bạn không cần phải nhấn Enter sau đó; Y hoặc N là đủ để bạn đăng ký lựa chọn.


Nếu bạn nhấn Y, cửa sổ sẽ đóng lại. Vì đây là cửa sổ duy nhất trong phiên này nên phiên này sẽ kết thúc.


Phiên này tmux đã đóng và bạn quay trở lại dòng lệnh mà bạn đã khởi chạy từ đó tmux. Bạn sẽ thấy "[exited]" trong cửa sổ terminal.

Điều này có vẻ như là một điều hiển nhiên nhưng đó là sự xác nhận rằng bạn đã đóng phiên chứ không để nó tách ra và chạy. Chúng ta sẽ thảo luận về các phiên tách bên dưới.

5. Bắt đầu phiên tmux được đặt tên

Nếu bạn thường xuyên bắt đầu nhiều tmux phiên, bạn sẽ nhanh chóng đánh giá cao chức năng đặt cho mỗi phiên một cái tên có ý nghĩa. Bạn screen cũng có thể đặt tên phiên bằng, nhưng chúng không được hiển thị ở bất kỳ đâu trong cửa sổ phiên.

Để bắt đầu tmuxbằng tên phiên, hãy sử dụng newlệnh (phiên mới) và -stùy chọn (tên phiên). Phiên của chúng tôi sẽ được gọi là "geek-1", vì vậy chúng tôi gõ như sau:

Mã nguồn [Chọn]
tmux new -s geek-1
Khi tmux tải phiên, "geek-1" được hiển thị dưới dạng mục nhập đầu tiên trên thanh trạng thái, ở phía ngoài cùng bên trái.


6. Thêm nhiều Windows hơn

Để tạo một cửa sổ mới trong phiên hiện tại, hãy nhấn Ctrl+B rồi nhấn C. Bạn sẽ nhận được một cửa sổ đầu cuối trống trong phiên hiện tại. Vì vậy, chúng ta sẽ có thứ gì đó đang chạy trong cửa sổ mới này, hãy bắt đầu dmesg lệnh với -w tùy chọn (follow):

Mã nguồn [Chọn]
dmesg -w
Bây giờ chúng ta có hai cửa sổ trong phiên; một cái đang chạy top, và cái kia dmesg. Tuy nhiên, chúng ta chỉ có thể nhìn thấy từng cái một (sẽ nói thêm về điều đó sau).


Hãy nhìn vào phía bên trái của thanh trạng thái. Chúng ta vẫn đang trong phiên "geek-1" tmux. Trong cửa sổ số 0, top đang chạy và trong cửa sổ một, dmesg đang chạy. Dấu hoa thị (*) sau dmesg cho chúng ta biết cửa sổ nào được hiển thị.

Để chuyển giữa các cửa sổ, nhấn Ctrl+B, rồi nhấn một trong các phím sau:

  • N : Hiển thị cửa sổ tiếp theo.
  • P: Hiển thị cửa sổ trước đó.
  • 0 đến 9: Hiển thị cửa sổ được đánh số từ 0 đến 9.

Bạn cũng có thể chọn một cửa sổ từ danh sách. Nếu bạn nhấn Ctrl+B rồi nhấn W, danh sách các cửa sổ sẽ xuất hiện.


Để di chuyển thanh tô sáng màu hổ phách, hãy nhấn Mũi tên lên hoặc xuống, Home hoặc End. Phần dưới cùng của Screen hiển thị bản xem trước nội dung trong cửa sổ được đánh dấu.

Nhấn Enter để di chuyển đến cửa sổ được đánh dấu hoặc Esc để rời khỏi danh sách cửa sổ mà không chuyển đổi.

7. Tách và đính kèm phiên

Nếu bạn nhấn Ctrl+B rồi nhấn D, bạn sẽ tách phiên. Nó sẽ tiếp tục chạy ở chế độ nền nhưng bạn sẽ không thể nhìn thấy hoặc tương tác với nó.

Chúng tôi đã bắt đầu top phiên này nên chúng tôi có một quy trình đang chạy để minh họa. Sau đó, chúng ta nhấn Ctrl+B rồi nhấn D. Phiên này sẽ biến mất và trở thành phiên nền.


Chúng ta quay trở lại cửa sổ terminal ban đầu. Có một thông báo cho tmux chúng tôi biết phiên này đã bị tách ra. Nó cũng nhắc nhở chúng ta về cái tên mà chúng ta đã đặt cho phiên họp. Điều này rất hữu ích vì đó là những gì chúng tôi sử dụng để đính kèm vào phiên nền và sau đó khôi phục nó về phiên tương tác.

Để đính kèm một phiên tách rời, chúng tôi sẽ sử dụng lệnh tự giải thích attach-session với -t tùy chọn (phiên đích). Chúng tôi cũng sẽ cung cấp tên của phiên mà chúng tôi muốn thu hồi.

Chúng ta gõ như sau:

Mã nguồn [Chọn]
tmux attach-session -t geek-1
Phiên của chúng tôi quay trở lại và trở thành phiên tương tác, hiển thị một lần nữa.


Mọi quy trình chạy dài hoặc liên tục mà bạn đã khởi chạy trước khi tách phiên sẽ vẫn chạy ở chế độ nền (trừ khi chúng đã hoàn tất) khi bạn đính kèm phiên.

Screen có thể làm điều này, nhưng không bằng trực giác.

8. Xử lý nhiều phiên

Hãy mở một cửa sổ terminal khác và bắt đầu tmux phiên mới có tên "geek-2":

Mã nguồn [Chọn]
tmux new -s geek-2
Trong phiên đó, chúng ta sẽ bắt đầu dmesg:

Mã nguồn [Chọn]
dmesg -w
Bây giờ, chúng tôi đã có tmux phiên "geek-1" ban đầu và một phiên mới có tên "geek-2".


Thanh trạng thái hiển thị cho chúng ta phiên này được gọi là "geek-2" và có một cửa sổ đang chạy dmesg.

Nếu chúng ta nhấn Ctrl+B rồi nhấn D, chúng ta sẽ tách phiên đó.


Quay lại tmux phiên "geek-1", chúng tôi nhấn Ctrl+B rồi nhấn S để xem danh sách tmux các phiên.


Để rõ ràng, đây là một danh sách các phiên. Screen tương tự mà chúng ta thấy trước đó là danh sách các cửa sổ trong một phiên.

Bạn có thể di chuyển thanh tô sáng màu hổ phách bằng cách nhấn Mũi tên lên và xuống, Home và End. Phần dưới cùng hiển thị bản xem trước nội dung trong phiên được đánh dấu.


Nếu bạn nhấn Mũi tên phải, các cửa sổ của phiên được đánh dấu sẽ được hiển thị.


Nhấn Enter để di chuyển đến phiên hoặc cửa sổ được đánh dấu hoặc Esc để rời khỏi danh sách phiên mà không thay đổi phiên. Nếu bạn chọn một phiên mới, phiên hiện tại của bạn sẽ tách ra và phiên bạn đã chọn sẽ được đính kèm.

Chúng tôi đã tách phiên "geek-2" trước khi thực hiện việc này. Tuy nhiên, bạn có thể thực hiện việc này với các phiên vẫn được gắn vào cửa sổ đầu cuối ban đầu của chúng. Khi bạn làm như vậy, mọi thay đổi trên Screen sẽ xuất hiện đồng thời trong cả hai tmux phiên.

Lệnh này screen cũng có thể thực hiện việc này thông qua một bộ lệnh tương tự.

9. Làm việc với các ô cửa sổ

Nếu bạn nhấn Ctrl+B, rồi nhân đôi dấu ngoặc kép (""), bạn sẽ chia cửa sổ theo chiều ngang thành hai khung.


Điều này chỉ ảnh hưởng đến cửa sổ hiện tại; những người khác trong phiên sẽ không bị thay đổi. Chúng tôi đã sử dụng tmux ls lệnh ở khung trên cùng để liệt kê các cửa sổ trong phiên này. Có hai và dòng trạng thái cho chúng ta biết chúng ta đang ở cửa sổ một. Nếu chúng ta chuyển sang cửa sổ số 0 bằng cách nhấn Ctrl+B, rồi nhấn 0 (không), chúng ta sẽ thấy nó vẫn như cũ.

Đây là hai dòng lệnh độc lập, không phải hai chế độ xem trong một cửa sổ; chúng là những lớp vỏ riêng biệt và riêng biệt. Chúng ta có thể hiển thị điều này bằng cách chạy một lệnh khác nhau trong mỗi khung.

Chúng ta gõ như sau:

uname -als -hl Để di chuyển từ ngăn này sang ngăn khác, hãy nhấn Ctrl+B, rồi nhấn Mũi tên lên, xuống, trái hoặc phải.


Nếu bạn nhấn Ctrl+B, sau đó nhấn dấu phần trăm ( %) nó sẽ chia ngăn hiện tại theo chiều dọc.


Nhấn Ctrl+B, rồi nhấn Q để hiển thị tmux nhanh số lượng của mỗi khung.


Những con số này được sử dụng trong lời nhắc và tin nhắn từ tmux. Nhấn Ctrl+B, rồi nhấn X để đóng ngăn hiện tại. Thanh trạng thái chuyển sang màu hổ phách và bạn được nhắc xác nhận rằng bạn muốn đóng số khung đó. Nhấn Y để xóa khung hoặc N để giữ nguyên mọi thứ.


Nếu bạn nhấn Y, khung sẽ bị xóa.


Lệnh này screen cũng có các ngăn, nhưng một lần nữa, chúng kém trực quan hơn khi sử dụng. Điều khiến chúng tôi khó chịu screen là nếu bạn tách một phiên bằng các ngăn, chúng sẽ biến mất khi bạn gắn lại phiên đó. Điều này cũ đi rất nhanh.

10. Bảng Ctrl + B

Chúng tôi đã đính kèm bảng tóm tắt các lệnh khác nhau mà bạn có thể sử dụng bên tmux dưới.

10.1. Lệnh phiên

  • S: Liệt kê các phiên.
  • $: Đổi tên phiên hiện tại.
  • D: Tách phiên hiện tại.
  • Ctrl+B, rồi nhấn ?: Hiển thị trang Trợ giúp ở định dạng tmux.

10.2. Lệnh cửa sổ

  • C: Tạo một cửa sổ mới.
  • ,: Đổi tên cửa sổ hiện tại.
  • W: Liệt kê các cửa sổ.
  • N: Di chuyển tới cửa sổ tiếp theo.
  • P: Di chuyển về cửa sổ trước đó.
  • 0 tới 9: Di chuyển đến số cửa sổ được chỉ định.

10.3. Lệnh ngăn

  • %: Tạo sự phân chia theo chiều ngang.
  • ": Tạo sự phân chia theo chiều dọc.
  • H hoặc Mũi tên trái: Di chuyển sang khung bên trái.
  • I hoặc Mũi tên phải: Di chuyển sang khung bên phải.
  • J hoặc Mũi tên xuống: Di chuyển đến khung bên dưới.
  • K hoặc Mũi tên lên: Di chuyển đến khung bên trên.
  • Q : Hiển thị ngắn gọn số khung.
  • O: Di chuyển qua các ô theo thứ tự. Mỗi lần nhấn sẽ đưa bạn đến lần nhấn tiếp theo cho đến khi bạn lặp qua tất cả chúng.
  • }: Hoán đổi vị trí của khung hiện tại với khung tiếp theo.
  • {: Hoán đổi vị trí của khung hiện tại với khung trước đó.
  • X: Đóng khung hiện tại.

11. So sánh chúng như thế nào

Về chức năng, screen và tmux cả hai đều hoạt động tương tự nhau và cung cấp các tính năng chính giống nhau. Đó là cách bạn truy cập các tính năng đó khác biệt rõ rệt. tmuxcung cấp những cách mượt mà, thoải mái hơn để truy cập các chức năng khác nhau. Tuy nhiên, đó không phải là sự khác biệt duy nhất.

Khả năng đổi tên các phiên và cửa sổ tmux rất gọn gàng và thực tế là nó vẫn giữ lại các bảng khi bạn gắn lại một phiên là một yếu tố thay đổi trò chơi.

Screen mặt khác, sẽ mất hoàn toàn các bảng khi bạn tách và gắn lại một phiên. Điều này gần như đủ khó chịu để khiến bạn tránh tách ra ngay từ đầu.

Còn nhiều hơn thế nữa tmux, bao gồm cả khả năng tạo tập lệnh vô cùng linh hoạt. Bạn nợ chính mình để kiểm tra nó.