Giải thích về bộ ghép kênh đầu cuối và lý do bạn nên sử dụng

Tác giả Starlink, T.Năm 16, 2025, 11:45:10 CHIỀU

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

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

Duy trì các phiên SSH của bạn liên tục.

    Bộ ghép kênh đầu cuối cho phép bạn chạy nhiều lệnh trong nhiều đầu cuối ảo khác nhau trong cùng một đầu cuối.
    Các bộ ghép kênh như tmux cho phép bạn chạy lệnh qua các kết nối từ xa mà không bị mất tiến trình do gián đoạn mạng.
    Các tùy chọn phổ biến bao gồm GNU Screen, tmux và Byobu.


Nếu bạn làm việc trên các phiên Linux từ xa, có lẽ bạn đã từng cảm thấy đau đớn khi kết nối của mình bị ngắt giữa chừng khi đang thực hiện một hoạt động tốn thời gian. Hoặc bạn có thể muốn chạy nhiều phiên trên một kết nối SSH. Bộ ghép kênh đầu cuối có thể là thứ bạn đang tìm kiếm.

1. Bộ ghép kênh đầu cuối là gì?

Bộ ghép kênh đầu cuối là một tiện ích cho phép bạn "ghép kênh" một đầu cuối hoặc sử dụng một đầu cuối như thể nó là nhiều đầu cuối. Nó tương tự như nhiều cửa sổ đầu cuối hoặc các đầu cuối có tab, nhưng trong một đầu cuối. Trên các máy tính hiện đại, nó thường nằm trong trình giả lập đầu cuối Linux, nhưng khái niệm này có từ khi cách sử dụng máy tính chính là thông qua các đầu cuối văn bản chuyên dụng.

Bộ ghép kênh đầu cuối cho phép bạn chạy lệnh trong một đầu cuối ảo trong khi chuyển sang đầu cuối khác để thực hiện các lệnh khác.

2. Tại sao nên sử dụng bộ ghép kênh đầu cuối?

Với những máy móc hiện đại có khả năng chạy nhiều cửa sổ thiết bị đầu cuối hoặc sử dụng thiết bị đầu cuối có tab và cả hai cùng một lúc, tại sao bạn lại phải bận tâm đến bộ ghép kênh thiết bị đầu cuối?

Nếu bạn đã từng đăng nhập vào một máy tính từ xa, chẳng hạn như máy chủ web hoặc thậm chí là máy chủ phòng thí nghiệm tại nhà của bạn và gặp sự cố mạng, bạn có thể thấy lợi thế của bộ ghép kênh đầu cuối. Trong phiên SSH thông thường, bạn sẽ thấy rằng ngay cả sau khi mạng hoạt động trở lại, SSH sẽ bỏ qua các lần nhấn phím của bạn. Bạn sẽ phải chấm dứt và khởi động lại kết nối SSH của mình. Nếu bạn đang ở giữa một hoạt động phức tạp, chẳng hạn như cập nhật các gói hoặc cài đặt phần mềm, bạn sẽ phải bắt đầu lại từ đầu. SSH được thiết kế cho các kết nối có dây.

Các công cụ như Mosh có thể loại bỏ phần lớn vấn đề này, nhưng bộ ghép kênh đầu cuối lại vượt trội hơn các kết nối từ xa. Bạn có thể bắt đầu một phiên, và nếu kết nối bị ngắt, bạn có thể kết nối lại và quay lại phiên đó như thể không có chuyện gì xảy ra. Bạn có thể bắt đầu một quy trình dài, ngắt kết nối, làm việc khác, kết nối lại và tiếp tục từ nơi bạn đã dừng lại. Bạn có thể duy trì một phiên trên một máy từ xa, và ngắt kết nối và kết nối lại bao lâu tùy thích. Miễn là máy chủ chưa được khởi động lại và phiên của bạn vẫn hoạt động, bạn có thể truy cập và thoát khỏi phiên đó bao nhiêu tùy thích.


Nếu bạn đã từng vào IRC và tự hỏi tại sao một số người dùng không bao giờ đăng xuất, thì không phải vì họ không ngủ, không đi làm, không đi học hay làm những việc khác. Được rồi, có thể họ không đi làm hay đi học, nhưng cách chính để họ duy trì trạng thái đăng nhập là chạy bộ ghép kênh đầu cuối trên máy chủ shell ở đâu đó. Điều này được gọi là "idling", chỉ cần duy trì trạng thái đăng nhập vào IRC mà không nói gì cả.

Một lý do rõ ràng khác là có nhiều cửa sổ terminal. Một lần nữa, đây là khả năng trở nên hữu ích qua các kết nối từ xa, vì hầu hết mọi người chạy Linux trên máy tính để bàn thường sẽ sử dụng hệ thống cửa sổ như X11 hoặc Wayland cho phép họ chạy nhiều cửa sổ terminal. Trong trường hợp cấp bách, họ có thể sử dụng bảng điều khiển ảo để chạy các phiên dòng lệnh toàn màn hình.

Nếu không có bộ ghép kênh đầu cuối được cài đặt trên máy từ xa, cách duy nhất để thực hiện đa nhiệm qua SSH là sử dụng kiểm soát công việc hoặc mở nhiều kết nối. Cách đầu tiên có thể cồng kềnh, trong khi cách thứ hai cần nhiều tài nguyên hơn. Sử dụng cùng một kết nối hợp lý hơn khi bạn có thể. Nếu bạn cần chạy lệnh và tham khảo trang hướng dẫn, bạn có thể đặt shell trong một cửa sổ và trang hướng dẫn trong một cửa sổ khác. Nhiều bộ ghép kênh đầu cuối sẽ cho phép bạn hiển thị nhiều cửa sổ trên cùng một màn hình. Tương tự như sử dụng trình quản lý cửa sổ xếp gạch.

Bộ ghép kênh đầu cuối là tốt nhất nếu bạn làm nhiều việc trên các máy từ xa, chẳng hạn như máy chủ web, tài khoản shell hoặc máy chủ phòng thí nghiệm tại nhà. Nếu bạn chủ yếu sử dụng máy tính để bàn, tốt hơn hết bạn nên sử dụng nhiều cửa sổ đầu cuối hoặc đầu cuối có tab. Nếu bạn muốn các cửa sổ đầu cuối của mình được sắp xếp gọn gàng, hãy cân nhắc sử dụng trình quản lý cửa sổ xếp gạch.

3. Một số bộ ghép kênh đầu cuối phổ biến là gì?

Có một số bộ ghép kênh đầu cuối mà bạn có thể sử dụng trên hệ thống Linux của mình.


GNU Screen : Đây là một trong những bộ ghép kênh đầu cuối lâu đời nhất, có trước Linux. GNU Screen đã có từ năm 1987. Ngay cả vào những năm 80, với sự phát triển của các máy trạm, rất nhiều người vẫn bị kẹt trên các thiết bị đầu cuối dựa trên ký tự. Screen giúp cuộc sống của nhiều người dùng này dễ dàng hơn với khả năng chia màn hình chật chội thành nhiều cửa sổ đầu cuối. Nó cũng giới thiệu ý tưởng tách và gắn lại các phiên.

Đây là một lợi ích cho những người quay số vào hệ thống từ xa qua modem. Mặc dù tôi chưa bao giờ sử dụng tài khoản shell trong thời kỳ hoàng kim của chúng, tôi vẫn nhớ những ngày của mạng quay số và thật khó chịu khi modem của tôi ở trên một đường dây chung và ai đó nhấc máy.

GNU Screen hầu như không có đối thủ cạnh tranh cho đến khi nó có một số đối thủ cạnh tranh vào thế kỷ 21.


tmux : ban đầu được phát triển như một phần của dự án OpenBSD, có vẻ như nó đã đánh bại GNU Screen để trở thành trình ghép kênh đầu cuối hàng đầu, được chuyển sang hầu hết mọi hệ thống giống Unix hiện có.


Byobu : Byobu ban đầu là một nhánh của GNU Screen được tạo ra cho Ubuntu. Tên này bắt nguồn từ một từ tiếng Nhật có nghĩa là màn hình trang trí có thể gập lại. Đúng với cách sử dụng hiện đại của bộ ghép kênh đầu cuối cho các hệ thống từ xa, nó chủ yếu được thiết kế để sử dụng trên các máy chủ Ubuntu. Theo thời gian, Byobu chuyển sang chủ yếu cải tiến tmux thay vì GNU Screen.

4. Bạn sử dụng bộ ghép kênh đầu cuối như thế nào?

Trước khi sử dụng bộ ghép kênh đầu cuối, bạn phải cài đặt nó. Tôi sẽ trình bày cách sử dụng tmux, vì đây là bộ ghép kênh đầu cuối tôi lựa chọn.

tmux có sẵn rộng rãi cho hầu hết các trình quản lý gói phân phối Linux chính. Tôi sẽ sử dụng Debian/Ubuntu làm ví dụ:

Mã nguồn [Chọn]
sudo apt install tmux
Bây giờ tôi đã cài đặt tmux, tôi có thể khởi chạy nó từ dòng lệnh:

Mã nguồn [Chọn]
tmux

Trong tmux, tôi có một phiên shell khác đang chạy. Tôi có thể nhập lệnh vào đó như thể tôi đang ở trong một phiên shell thông thường. Tôi có thể đưa lệnh vào tmux với tiền tố Ctrl+b. Để tạo một cửa sổ terminal khác, tôi sử dụng Ctrl+b, sau đó nhấn c. Thao tác này sẽ mở một cửa sổ terminal khác trong tmux và chuyển sang cửa sổ đó. Các cửa sổ hiện tại được liệt kê ở góc dưới bên trái của cửa sổ terminal trên thanh trạng thái. Để chuyển đổi giữa các cửa sổ, tôi có thể nhấn Ctrl+b một lần nữa, theo sau là số cửa sổ tôi muốn chuyển đến.


Tôi cũng có thể chia một cửa sổ hiện tại thành nhiều phiên terminal hơn. Để chia cửa sổ theo chiều ngang, tôi có thể nhấn Ctrl+b theo sau là dấu " (dấu ngoặc kép), và để chia theo chiều dọc, tôi sẽ nhấn Ctrl+b theo sau là phím % (phần trăm). Các phiên trong mỗi cửa sổ được gọi là "khung" trong tmux. Tôi có thể chuyển đổi giữa các khung bằng Ctrl+b theo sau là chữ o, và hoán đổi vị trí các khung bằng Ctrl+b theo sau là chữ O (chữ O viết hoa).


Để tách một phiên, tôi có thể nhấn Ctrl+b theo sau là d. Để gắn lại sau khi tôi đã tách nó, tôi sẽ nhập lệnh này tại dấu nhắc.

 
Mã nguồn [Chọn]
tmux attach
Tôi có thể sao chép và dán giữa các phiên làm việc bằng cách chuyển sang "chế độ sao chép", nhưng phần lớn thời gian tôi sẽ sử dụng chức năng sao chép và dán gốc trong hệ thống cửa sổ của mình.

Bộ ghép kênh đầu cuối có thể không rõ ràng, nhưng nếu bạn sử dụng rộng rãi các máy Linux từ xa, chúng có thể hữu ích trong việc chia một phiên đầu cuối thành nhiều đầu cuối và duy trì kết nối với máy chủ của bạn ngay cả khi kết nối của bạn bị ngắt. Chọn một bộ ghép kênh đầu cuối như tmux có thể làm cho các phiên trực tuyến của bạn hữu ích hơn và thậm chí thú vị hơn.