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

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

Nhiều cửa sổ tmux cùng chạy song song, mỗi cửa sổ chia thành nhiều pane chạy lệnh khác nhau
Nhiều cửa sổ tmux cùng chạy song song, mỗi cửa sổ chia thành nhiều pane chạy lệnh khác nhau

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
Thanh trạng thái tmux ở đáy màn hình hiển thị tên session, danh sách cửa sổ và bố cục pane
Thanh trạng thái tmux ở đáy màn hình hiển thị tên session, danh sách cửa sổ và bố cục pane

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
Một phiên tmux đang chạy ứng dụng chat, minh hoạ việc phiên làm việc tồn tại độc lập với terminal
Một phiên tmux đang chạy ứng dụng chat, minh hoạ việc phiên làm việc tồn tại độc lập với terminal

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+b rồi %: chia pane thành hai cột dọc.
  • Ctrl+b rồi ": chia pane thành hai hàng ngang.
  • Ctrl+b rồi c: tạo cửa sổ mới.
  • Ctrl+b rồi n và p: chuyển sang cửa sổ kế tiếp và trước đó.
  • Ctrl+b rồi z: thu phóng toàn màn hình pane hiện tại.
  • Ctrl+b rồi [: vào copy mode, dùng phím mũi tên để cuộn và Space để bắt đầu chọn.
  • Ctrl+b rồ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 -f log nginx, một pane chạy htop, 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.

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

Sidecar pattern là gì? Kiến trúc tách phụ trợ khỏi ứng dụng chính

Sidecar pattern là gì? Kiến trúc tách phụ trợ khỏi ứng dụng chính Sidecar pattern (mẫu xe bên cánh) là một mẫu kiến trúc phần mềm trong đó các chức…

Xem thêm

bat là gì? Lệnh thay thế cat với tô màu cú pháp

bat là công cụ command line thay thế lệnh cat trên Linux và macOS, bổ sung tô màu cú pháp, tích hợp Git và hiển thị ký tự không in…

Xem thêm

Tối ưu pin iPhone: Cách giảm hao pin hiệu quả nhất

Điện thoại hết pin giữa chừng buổi sáng và bạn phải cắm sạc mỗi ngày là dấu hiệu cho thấy việc tối ưu pin iPhone của bạn chưa thực sự…

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