tmux là gì: Quản lý phiên terminal cho lập trình viên

Man hinh tmux voi nhieu khung chia va cua so

tmux là gì? tmux là trình quản lý phiên terminal mã nguồn mở, cho phép bạn tạo nhiều cửa sổ và khung chia nhỏ trong cùng một terminal, đồng thời giữ các tiến trình chạy nền khi bạn ngắt kết nối. Đây là công cụ gần như bắt buộc với lập trình viên làm việc trên máy chủ từ xa.

Màn hình tmux với nhiều khung chia và cửa sổ

tmux là gì và vì sao nên dùng

tmux (Terminal Multiplexer) cho phép nhiều chương trình chạy trong một cửa sổ terminal duy nhất, mỗi chương trình nằm trong một ô riêng biệt gọi là pane. Nhờ đó, bạn có thể vừa chạy editor, vừa theo dõi log server, vừa chạy lệnh shell mà không phải mở nhiều tab terminal.

Khác với các terminal emulator thông thường, tmux chạy trên máy chủ và duy trì phiên làm việc trên chính server. Khi kết nối SSH bị rớt, đóng terminal hoặc thay đổi mạng, các tiến trình đó vẫn tiếp tục chạy. Khi bạn kết nối lại, mọi thứ quay về đúng trạng thái trước đó, bao gồm cả nội dung đã lăn trên màn hình.

Các tính năng chính của tmux bao gồm:

  • Quản lý phiên (session): Gom nhóm các cửa sổ có liên quan, đặt tên để dễ tìm lại.
  • Cửa sổ (window): Tương đương tab, mỗi cửa sổ có thể chạy một chương trình khác nhau.
  • Khung (pane): Chia nhỏ cửa sổ theo chiều ngang hoặc dọc, thuận tiện để so sánh output.
  • Tách phiên (detach/attach): Rời khỏi phiên mà không tắt tiến trình, quay lại bất cứ lúc nào.
  • Tùy biến cao: Hỗ trợ phím tắt, script, plugin và hook, có thể lập trình hoàn toàn.

Cài đặt tmux trên Linux và macOS

Trên Debian và Ubuntu:

sudo apt update && sudo apt install tmux

Trên Fedora và RHEL:

sudo dnf install tmux

Trên macOS, tmux đã có sẵn trong hệ thống, nhưng có thể cài phiên bản mới hơn qua Homebrew:

brew install tmux

Sau khi cài đặt, kiểm tra phiên bản với lệnh tmux -V. Hướng dẫn chính thức của dự án nằm trong trang wiki tmux trên GitHub.

Các lệnh tmux cơ bản cần nhớ

tmux sử dụng một phím tắt tiền tố, mặc định là tổ hợp Ctrl + b, được gọi là “prefix”. Mọi lệnh ngắn đều bắt đầu bằng tổ hợp này.

Lệnh Chức năng
tmux new -s ten Tạo phiên mới đặt tên là “ten”
tmux ls Liệt kê các phiên đang chạy
tmux attach -t ten Quay lại phiên có tên “ten”
Ctrl+b % Chia cửa sổ theo chiều dọc (trái/phải)
Ctrl+b " Chia cửa sổ theo chiều ngang (trên/dưới)
Ctrl+b c Tạo cửa sổ mới
Ctrl+b n Chuyển tới cửa sổ kế tiếp
Ctrl+b d Tách khỏi phiên, tiến trình vẫn chạy
Ctrl+b , Đổi tên cửa sổ hiện tại
Ctrl+b x Xóa cửa sổ hiện tại (có hỏi xác nhận)

Phiên tmux hiển thị trong terminal

Tách và kết nối lại phiên trên máy chủ từ xa

Đây là bài toán quan trọng nhất mà tmux giải quyết. Giả sử bạn đang chạy một tác vụ dài như huấn luyện mô hình hay sao lưu dữ liệu trên server, rồi đi về gặp mạng di động. Thay vì mất trắng tiến trình, bạn chỉ cần nhấn Ctrl+b rồi d để tách phiên.

Khi cần quay lại, kết nối SSH vào server và chạy:

ssh user@server-ip
tmux attach -t ten

tmux cho phép nhiều người cùng gắn vào một phiên và nhìn thấy nội dung giống nhau, nên bạn cũng có thể dùng tính năng này để chia sẻ màn hình làm việc với đồng nghiệp mà không cần công cụ remote desktop.

Tách khung và điều hướng giữa các pane

Sau khi chia nhiều khung, bạn di chuyển giữa các pane bằng phím mũi tên khi prefix đang bật. Các tổ hợp Ctrl+b kèm phím mũi tên cho phép chuyển ô liền kề. Bạn cũng có thể dùng Ctrl+b rồi o để xoay vòng qua các pane theo thứ tự.

Để thay đổi kích thước pane, dùng Ctrl+b rồi Space để vào chế độ resize, sau đó dùng phím mũi tên. Hoặc dùng trực tiếp Ctrl+b rồi m để bật chế độ điều khiển chuột, khi đó bạn có thể kéo thả ranh giới giữa các ô.

Copy và paste trong tmux

Đây là nguồn khó chịu phổ biến nhất cho người mới dùng tmux. Bản sao chép chuẩn của terminal (Ctrl+Shift+C) sẽ không hoạt động khi đang ở chế độ lệnh của chương trình, vì prefix chiếm Ctrl+b. Cách chuẩn là dùng chế độ copy mode:

Ctrl+b [
# di chuyển bằng phím mũi tên, Space để bắt đầu chọn
# Enter để copy và tự thoát copy mode

Bạn cũng có thể cấu hình lại để dùng chuột và copy mode mượt hơn trong file cấu hình.

Cấu hình tmux bằng file .tmux.conf

Để tùy chỉnh tmux, bạn tạo file ~/.tmux.conf. Ví dụ cấu hình cơ bản sau đặt prefix thành Ctrl+a, bật chuột và bật thanh trạng thái:

set -g mouse on
set -g prefix C-a
unbind C-b
bind C-a send-prefix
set -g status-style "bg=#2E3440,fg=#D8DEE9"
set -g status-left "#[fg=green] #S | #W "
set -g status-right "#H | %M:%S"
set -g history-limit 50000

Sau khi sửa file, nạp lại cấu hình mà không cần khởi động lại phiên:

tmux source-file ~/.tmux.conf

Người dùng có thể tìm thêm cấu hình mẫu trong các kho sưu tầm trên trang Advanced Use của tmux wiki hoặc trong bài tmux plugin manager để quản lý plugin.

Plugin hữu ích cho tmux

tmux hỗ trợ plugin thông qua trình quản lý chính thức tên là TPM (Tmux Plugin Manager). Một số plugin đáng chú ý gồm tpmux để điều khiển tmux bằng bàn phím, ssh để tự động lưu phiên, và yank giúp copy nhanh hơn. Việc cài plugin giúp trải nghiệm tmux thoải mái hơn đáng kể cho công việc hằng ngày.

Kết luận

tmux là công cụ nhỏ gọn nhưng mang lại hiệu quả lớn cho công việc trên terminal. Nó giải quyết triệt để ba vấn đề thường gặp: quản lý nhiều cửa sổ, giữ tiến trình sống khi mất kết nối, và chia sẻ phiên làm việc. Chỉ cần nắm các lệnh cơ bản như tạo, tách và gắn lại phiên cùng một file cấu hình đơn giản, bạn đã có thể nâng cao đáng kể hiệu suất làm việc hằng ngày. Đây là lý do tmux là gì và tại sao nên dùng là chủ đề được nhiều lập trình viên quan tâm.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Neovim là gì: Trình soạn thảo mở nâng cấp từ Vim

Neovim là một trình soạn thảo mã nguồn mở, nhánh riêng của Vim được thiết kế để cải thiện khả năng mở rộng và hiệu suất nhờ viết lại phần…

Xem thêm

Passkey là gì: Đăng nhập không mật khẩu với FIDO2

Passkey là gì? Passkey (khóa truy cập) là phương thức đăng nhập không dùng mật khẩu, dựa trên tiêu chuẩn FIDO2 và WebAuthn. Thay vì gửi một chuỗi ký tự…

Xem thêm

Hướng dẫn thiết lập môi trường phát triển với Docker Compose cho microservices

Hướng dẫn thiết lập môi trường phát triển với Docker Compose cho microservices Trong thời đại ứng dụng hiện đại, microservices đã trở thành kiến trúc tiêu chuẩn để xây…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất