
tmux là gì? Terminal multiplexer cho lập trình viên dòng lệnh

tmux phát triển theo mô hình BSD và được Chris Devine viết từ năm 1999, hiện được duy trì bởi cộng đồng và có mặt trong kho phần mềm của gần như mọi bản phân phối Linux. Đây là công cụ mà phần lớn quản trị viên máy chủ và lập trình viên đều cài mặc định.
Ba khái niệm cốt lõi
Toàn bộ mô hình của tmux dựng trên ba tầng lồng nhau:
| Khái niệm | Ý nghĩa | Phím tắt |
|---|---|---|
| Session (phiên) | Một phiên làm việc độc lập, có thể tách và ghép lại | Ctrl+b rồi d để tách |
| Window (cửa sổ) | Giống tab trong trình duyệt, mỗi cửa sổ chạy một tiến trình | Ctrl+b rồi c tạo mới |
| Pane (khung) | Vùng chia nhỏ bên trong một cửa sổ | Ctrl+b rồi % chia dọc, " chia ngang |

Cài đặt và cấu hình
Trên Ubuntu và Debian, cài đặt qua trình quản lý gói là nhanh nhất:
sudo apt update && sudo apt install -y tmux
Tạo một phiên làm việc mới với tên do bạn chọn:
tmux new -s deploy
Khi làm xong một nhóm tác vụ và muốn quay lại terminal thật mà không tắt tiến trình đang chạy, gõ Ctrl+b rồi thả ra và nhấn d. Terminal trở về bình thường. Muốn quay lại phiên cũ:
tmux attach -t deploy

Các lệnh tmux dùng hằng ngày
Không cần nhớ phím tắt nếu bạn gõ lệnh trực tiếp. Dưới đây là những lệnh tôi dùng nhiều nhất:
tmux ls # liệt kê các phiên đang chạy
tmux new -s tên -d # tạo phiên chạy nền, không vào ngay
tmux split-window -h # chia pane trái/phải
tmux split-window -v # chia pane trên/dưới
tmux rename-window api # đặt tên cửa sổ cho dễ nhận biết
tmux kill-session -t deploy # xóa phiên
tmux new -s x ; split-window ; attach # tạo phiên kèm pane ngay
Với thao tác bàn phím, bạn luôn bắt đầu bằng phím tiền tố Ctrl+b, sau đó nhấn một phím hoặc một tổ hợp phím. Những tổ hợp đáng nhớ:
Ctrl+brồi%: chia pane thành hai cột dọc.Ctrl+brồi": chia pane thành hai hàng ngang.Ctrl+brồic: tạo cửa sổ mới.Ctrl+brồinvàp: chuyển sang cửa sổ kế tiếp và trước đó.Ctrl+brồiz: thu phóng toàn màn hình pane hiện tại.Ctrl+brồi[: vào copy mode, dùng phím mũi tên để cuộn vàSpaceđể bắt đầu chọn.Ctrl+brồi?: hiện bảng tra cứu nhanh toàn bộ phím tắt.
File cấu hình và các tuỳ chọn hữu ích
Mọi cài đặt nằm trong ~/.tmux.conf. Dưới đây là một cấu hình tối giản mà tôi dùng cho hầu hết các dự án:
# Bắt đầu với cửa sổ đánh số từ 1 thay vì 0
set -g base-index 1
setw -g pane-base-index 1
# Cuộn chuột hoạt động trong copy mode
set -g mouse on
# Giữ lịch sử dài hơn mặc định
set -g history-limit 50000
# Đổi phím tạo pane cho dễ nhớ
unbind %
bind | split-window -h -c "#{pane_current_path}"
unbind "
bind - split-window -v -c "#{pane_current_path}"
Biến pane_current_path trong cấu hình trên là chi tiết hay gặp: khi bạn chia pane, pane mới sẽ mở đúng thư mục đang làm việc thay vì quay về thư mục home. Điều này quan trọng khi bạn đang phân tích log trong một thư mục cụ thể rồi đột nhiên cần xem source code ở nhánh khác.
Khi nào tmux thực sự tạo ra khác biệt
tmux không phải công cụ cho người dùng bình thường. Nó tỏ ra đáng giá trong ba tình huống rất cụ thể:
- Làm việc dài trên máy chủ từ xa: bạn khởi chạy một quy trình xử lý dữ liệu dài hàng giờ, SSH rớt giữa chừng mà tiến trình vẫn chạy nguyên.
- Giám sát nhiều dịch vụ cùng lúc: bạn mở một pane cho
tail -flog nginx, một pane chạyhtop, một pane vào docker, và tất cả nằm gọn trong một khung cửa sổ duy nhất. - Quản lý cụm máy chủ: bạn có thể viết script SSH tự động ghép các phiên tmux theo tên máy chủ, giúp chuyển đổi nhanh giữa các node trong cụm.
Nếu bạn chỉ cần mở nhiều tab terminal cục bộ, hãy dùng phím tắt tab của terminal emulator sẽ gọn hơn. tmux thắng khi kết nối mạng không ổn định và khi bạn cần cấu trúc cửa sổ nhất quán giữa các máy. Hầu hết người dùng kết hợp cả hai: terminal emulator hỗ trợ tab và phân chia, còn tmux chạy bên trong cho phiên bền vững.
Tham khảo thêm: mã nguồn tmux trên GitHub và hướng dẫn tmux trên OpenBSD.
