
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.

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) |

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.
