Tmux: Quản Lý Nhiều Terminal Phiên Đồng Thời

Tmux: Quản Lý Nhiều Terminal Phiên Đồng Thời

Developer làm việc trên nhiều tmux session tăng năng suất
Developer làm việc trên nhiều tmux session tăng năng suất

Tmux là terminal multiplexer cho phép bạn chạy nhiều phiên terminal trong cùng một cửa sổ, tách và gắn phiên bất cứ lúc nào, đồng thời cung cấp cách thức thi hành nhanh, chia sẻ terminal và bảo vệ session khỏi gián đoạn mạng. Nó là công cụ không thể thiếu cho devops, sysadmin, và nhà phát triển làm việc trên server.

Tmux Là Gì?

Tmux (terminal multiplexer) là một công cụ command-line giúp bạn thực hiện nhiều tác vụ song song trong một cửa sổ terminal:

  • Chia cửa sổ terminal thành các pane song song (split panes)
  • Tạo và chuyển đổi giữa nhiều tab (windows) trong cùng một session
  • Giữ session chạy nền khi kết nối SSH rơi (detach/attach)
  • Truy cập lại công việc từ bất kỳ máy khách nào (reconnect)

Cài Đặt Tmux

Trên hầu hết các hệ thống Linux và macOS, cài đặt chỉ mất một lệnh:

# Debian/Ubuntu
sudo apt update && sudo apt install tmux

# RHEL/CentOS/Fedora
sudo dnf install tmux

# macOS (Homebrew)
brew install tmux

Sau khi cài, gõ tmux để bắt đầu phiên đầu tiên. Màn hình sẽ hiển thị thanh trạng thái dưới cùng với thông tin session, window, và pane hiện tại.

Các Lệnh Cơ Bản

Tmux sử dụng prefix Ctrl+b (có thể thay đổi) để nhận diện lệnh. Các lệnh sau được gõ sau khi nhấn prefix:

Chức năng Lệnh Mô tả
Tạo pane mới ngang Ctrl+b % Chia pane hiện tại thành 2 pane trên dưới
Tạo pane mới dọc Ctrl+b “ Chia pane hiện tại thành 2 pane trái phải
Chuyển focus pane Ctrl+b mũi tên Di chuyển focus giữa các pane
Đổi kích thước pane Ctrl+b Alt + mũi tên Thay đổi kích thước pane hiện tại
Tạo window mới (tab) Ctrl+b c Mở tab mới trong cùng session
Chuyển window Ctrl+b p/n Tab trước/tab sau
Đổi tên window Ctrl+b , Nhập tên mới cho tab hiện tại
Detach session Ctrl+b d Tách session ra nền, giữ tiến trình chạy
Attach session tmux attach Gắn lại session đã detach
Tmux terminal chia nhiều pane hiển thị editor, logs, system monitor
Tmux terminal chia nhiều pane hiển thị editor, logs, system monitor

Làm Việc Nhiều Session

Bạn có thể chạy nhiều session tmux đồng thời, mỗi session có tên riêng và cách ly hoàn toàn:

# Tạo session có tên "dev"
tmux new -s dev

# Tạo session có tên "monitor"
tmux new -s monitor

# Liệt kê tất cả session
tmux ls

# Gắn session có tên "dev"
tmux attach -t dev

# Gắn session có tên "monitor"
tmux attach -t monitor

Customize Thanh Trạng Thái

File cấu hình ~/.tmux.conf cho phép bạn thay đổi giao diện, gán phím mới, và thêm plugin. Một số cấu hình hay được sử dụng:

# Đổi prefix từ Ctrl+b thành Ctrl+a (giống screen)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# Bật hỗ trợ chuột (chọn pane, resize bằng chuột)
set -g mouse on

# Thanh trạng thái với thông tin chi tiết
set -g status-style fg=white,bg=black
set -g status-left '#[fg=green]#S #[fg=yellow]#I #[fg=cyan]#P'
set -g status-right '#[fg=white]%H:%M #[fg=green]%d-%b-%y'

# Viết index window từ 1 thay vì 0
set -g base-index 1
set -g pane-base-index 1

Session Management Cho Hệ Thống

Một trong những lợi thế mạnh nhất của tmux là khả năng bảo vệ session khỏi gián đoạn mạng. Khi làm việc qua SSH và kết nối rơi:

  1. Bạn đang trong tmux session, gõ Ctrl+b d để detach (tạm thời tách ra).
  2. Kết nối SSH bị ngắt, nhưng mọi tiến trình trong tmux vẫn tiếp tục chạy.
  3. Kết nối lại SSH, gõ tmux attach để trở lại chính nơi bạn dừng.

Điều này vô cùng hữu ích cho các tác vụ lâu như:

  • Biên dịch source code lớn
  • Chạy migration database
  • Giám sát log server thời gian thực
  • Thực hiện script deploy tự động

Copy-Paste Trong Tmux

Tmux có bộ nhớ đệm riêng cho việc sao chép văn bản. Để vào chế độ copy:

Ctrl+b [  # Bắt đầu chọn văn bản
# Di chuyển con trỏ bằng mũi tên hoặc PageUp/PageDown
Space   # Bắt đầu chọn
Enter   # Sao chép vào buffer và thoát chế độ copy
Ctrl+b ]  # Dán nội dung vừa sao chép

Nếu bật set -g mouse on, bạn có thể chọn văn bản bằng chuột và nhả để sao chép tự động.

Plugin Manager: TPM

Tmux Plugin Manager (TPM) giúp bạn cài đặt và quản lý plugin dễ dàng:

  1. Cài đặt TPM: git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
  2. Thêm vào ~/.tmux.conf:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'  # Lưu/restore session
set -g @plugin 'tmux-plugins/tmux-yank'       # Copy to system clipboard
run '~/.tmux/plugins/tpm/tpm'

Sau đó reload config (Ctrl+b r) và nhấn Ctrl+b I để cài plugin.

So Sánh Tmux Với GNU Screen

  • Giao diện: Tmux có thanh trạng thái đẹp hơn và dễ customize.
  • Scripting: Tmux có API mạnh hơn để tự động tạo layout.
  • Session sharing: Tmux cho phép nhiều client kết nối cùng session.
  • Active development: Tmux được cập nhật thường xuyên với tính năng mới.

Kết Luận

Tmux là chiếc “nai nhím” cho terminal, biến một dòng lệnh đơn giản thành môi trường làm việc mạnh mẽ. Với khả năng detach/attach, chia pane, và quản lý session, tmux giúp bạn làm việc hiệu quả hơn trên server, đặc biệt khi kết nối không ổn định.

Nếu bạn chưa từng dùng tmux, hôm nay là ngày tuyệt vời để bắt đầu. Chỉ cần cài đặt và học vài lệnh cơ bản, bạn sẽ ngay lập tức nhận ra lợi ích mà nó mang lại.

Nguồn tham khảo: Tmux GitHub, Tmux Cheat Sheet

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

Tailscale VPN Mesh: Kết Nối Mạng An Toàn Từ Mọi Nơi

Tailscale là giải pháp VPN mesh dựa trên WireGuard cho phép kết nối tất cả thiết bị của bạn thành một mạng an toàn duy nhất. Với Tailscale, bạn không…

Xem thêm

OBS Studio: Phần mềm quay màn hình miễn phí cho mọi nền tảng

OBS Studio: Phần mềm quay màn hình miễn phí cho mọi nền tảng OBS Studio (Open Broadcaster Software) là phần mềm mã nguồn mở miễn phí dùng để quay màn…

Xem thêm

Podman: Container rootless thay thế Docker an toàn và không cần daemon

Podman là công cụ quản lý container mã nguồn mở, được thiết kế để thay thế hoàn toàn Docker mà không cần chạy daemon nền. Với kiến trúc rootless an…

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